直截了当的问题,是否有人知道如何使用链接到mongoDB数据库的morphia进行通配符查询?
这就是mongo语句的样子:
Mongo:db.users.find({name:/Joe/})
SQL: SELECT * FROM users WHERE name LIKE "%Joe%"
我的morphia语句如下:
吗啡: ds.find(File.class, "filename","/test/").order("filename").asList();
我的数据库中有文件名,例如test1,test等
如果有人可以告诉我,如果甚至可以使用吗啡,那将是非常感激的.
谢谢
我有一个用例,我需要根据查询从mongo获取对象列表.但是,为了提高性能,我正在增加分页.因此,对于第一次调用我得到10个对象的列表,接下来我还需要10个.但我不能直接使用offset和pageSize,因为页面上显示的前10个对象可能已被修改[删除].
解决方案是找到传递的最后一个对象的Object Id,并在该ObjectId之后检索下一个10个对象.
请帮助如何使用Morphia mongo有效地完成它.
使用文档oriënted数据库mongodb和Object Document Mapper(ODM)morphia
可以说我们有3个不同的类; Object,Category和Action.
这些对象都存储在集合中; 对象,类别和动作.
Category并且Action是参考Object
@Entity("objects")
public class Object {
@Id
@Property("id")
private ObjectId id;
@Reference
private Category category;
private Action action;
...
}
@Entity("categories")
public class Category {
@Id
public String categoryTLA;
public String categoryName;
...
}
@Entity("actions")
public class Action implements BaseEntity {
@Id
public String action;
public int accesLevel;
...
}
Run Code Online (Sandbox Code Playgroud)
具有当前实现的文档存储如下:
我想根据一个对象的ID(或其他单个字段)来检索一个对象,该对象从要检索的对象中嵌套2个级别。一个例子来说明:
我想查找特定用户已评论过的所有博客文章。
Blog
List<Comment>
ignoredField1
ignoredField2
User
id
name
ignoredField3
Run Code Online (Sandbox Code Playgroud)
注释和用户由其父对象引用。
阅读这篇文章后 http://groups.google.com/group/morphia/browse_thread/thread/57090ef1bd2f3e74?pli=1
我了解如何找到带有注释的博客,其中ignoreField1 / 2具有特定的价值,但我想进一步浏览。
我尝试了以下操作,但是由于比较了所有注释字段,所以没有匹配项
q.field("comments").hasThisElement(new Comment(new User("name")));
Run Code Online (Sandbox Code Playgroud) 我有一个我在Play中创建的大实体!Java中的框架,我想使用Morphia和MongoDB从数据库中仅检索特定字段.实体本身非常大并且包含许多字段,因此我希望通过从中检索一个字段来提高应用程序的性能.
我知道这是可能的,但我无法弄明白该怎么做...
以下是我班上的一些领域Shop:
public String imagePath;
public String profileImagePath;
public String Motto;
@Reference
public Category primeCategory;
public boolean isOnline;
Run Code Online (Sandbox Code Playgroud)
如您所见,该primeCategory字段是Category我想要检索的实体.我在Morphia的网站上看到了一些想要实现的东西:
Datastore ds = null;
Shop shop = ds.createQuery(Shop.class).retrievedFields(true, "primeCategory").get();
Run Code Online (Sandbox Code Playgroud)
我不确定我到底在做什么.
如果有人可以向我解释这是不是这样,我应该怎么做,并提供一个例子,那将是很棒的.
我的文档具有以下结构:
{
"scores": [{
"scoreTitle": "environment",
"scoreValue": 3,
"scoreDescribe": "good"
}, {
"scoreTitle": "service",
"scoreValue": 3,
"scoreDescribe": "good"
}, {
"scoreTitle": "taste",
"scoreValue": 4,
"scoreDescribe": "good"
}]
}
Run Code Online (Sandbox Code Playgroud)
在mongo shell中,我可以使用以下查询来查找具有标题为"environment"且值大于2的分数的文档.
db.reviews.find({"scores":{"$elemMatch":{"scoreValue":{"$gt":2},"scoreTitle":"environment"}}})
Run Code Online (Sandbox Code Playgroud)
现在我想使用morphia来查询文档,在api doc中,fiter方法支持'elem'运算符,并且需要一个额外的查询条件对象,例如,查询具有标题为"的分数的文档"环境"和描述是"好":
Score score = new Score();// the criteria object, only support comparisons of equality
score.setScoreTitle("environment"); // title should be environment
score.setScoreDescribe("good"); // describe should be good
Query q = ds.createQuery(Review.class).filter("scores elem", score);
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何在查询条件中进行数值比较,也就是说,如何进行与mongo shell对应的效果相同的查询.
我不想利用Spring DATA MongoDB支持.我想利用名为Morphia的MongoDB的ORM.
https://github.com/mongodb/morphia
我想用Spring Boot配置Morphia.我想以一种遵循Spring Boot理念的方式外化Morphia的配置.
我想利用环境变量来配置Morphia属性.
实现这一目的的Spring Boot方法是什么?
在一个简单的主程序中会做以下事情以使Morhpia ORM正常工作.
private Morphia morphia;
private MongoClient mongoClient;
morphia = new Morphia();
// Person is an entity object with Morphia annotations
morphia.map(Person.class);
// THESE properties MUST be read from environment variables in Spring BOOT.
final String host = "localhost";
final int port = 27017;
mongoClient = new MongoClient(host, port);
//Set database
// this instance would be autowired all data access classes
Datastore ds = morphia.createDatastore(mongoClient, "dataStoreInstanceId");
// this is how …Run Code Online (Sandbox Code Playgroud) 假设我有一个MongoDB实体,如下所示:
@Entity(value = "car")
public class Car {
public String manufacturer;
public String model;
public String year;
public Double price;
}
Run Code Online (Sandbox Code Playgroud)
我想添加一个索引,使该对manufacturer,model,year是唯一的.
当我尝试以下注释时@Indexes(@Index(value="manufacturer,model,year, unique=true))- 它有效.但它会引发以下错误:
[WARN] (main) : DatastoreImpl - This index on 'Car' is using deprecated configuration options. Please update to use the fields value on @Index: @org.mongodb.morphia.annotations.Index(unique=true, dropDups=false, background=false, name=, value=manufacturer, model, year, expireAfterSeconds=-1, disableValidation=false, sparse=false, fields=[], options=@org.mongodb.morphia.annotations.IndexOptions(unique=false, dropDups=false, background=false, name=, expireAfterSeconds=-1, disableValidation=false, language=, languageOverride=, sparse=false))
Run Code Online (Sandbox Code Playgroud)
如何正确配置索引?
我正在使用Java语言.我必须使用ORM框架和MongoDb作为Database.I有两个选项Morphia或Spring Data Mongo支持.到目前为止我能够获得详细信息,已经发现Spring Data Mongo更好用,因为: 1)它提供了更好的DAO开箱即用的内置类.2)它有更大的社区基础.
两者之间是否有基于性能的差异.如果哪一个在哪个条件下哪个更好.我也有多租户的要求.经过一点点搜索后我发现Spring Data Mongo中有非常简单的自定义实现做同样的事情.但是在Morphia,这有点困难.在Morphia diificult实现多租户(我们需要写很多锅炉板代码)
我有以下几种类型的请求。
server/controllerName/access_id/id/field/field_value/api_name
server/controllerName/access_id/id/field/field_value/field2/field_value/api_name
Run Code Online (Sandbox Code Playgroud)
几个字段示例:
1. start date and end date
2. user name
3. user group
Run Code Online (Sandbox Code Playgroud)
Mongo DB数据格式:
Mongo DB存储用户订单详细信息。每个订单包含用户详细信息[10个字段]和订单详细信息[30个字段]
如果未提及日期,则API必须默认提供最近30天的订单。
我的问题:
如何有效地从mongo db读取此数据?
我目前正在做什么:
我正在解析httprequest并将这些字段添加到map
{"name":"gibbs", "category":"vip"}
Run Code Online (Sandbox Code Playgroud)
我必须获取这两个字段匹配的所有文档,并以以下形式返回文档。
{
user: "gibbs",
total_Result: 10,
[
{
//order details items from doc 1
}
{
//order details from doc2
}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在查询mongo db,如下所示。
MongoCollection<Document> mongoEngCollection = mongoDbReader.getCollection();
BasicDBObject andQuery = new BasicDBObject();
List<BasicDBObject> obj = new ArrayList<BasicDBObject>();
//Forming query using request parameter. requestAttributes contains map …Run Code Online (Sandbox Code Playgroud) morphia ×10
mongodb ×9
java ×7
mongodb-java ×1
pagination ×1
regex ×1
sorting ×1
spring ×1
spring-boot ×1
wildcard ×1