标签: morphia

Morphia mongoDB通配符查询

直截了当的问题,是否有人知道如何使用链接到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等

如果有人可以告诉我,如果甚至可以使用吗啡,那将是非常感激的.

谢谢

regex wildcard mongodb morphia mongodb-java

7
推荐指数
1
解决办法
4788
查看次数

Mongo分页

我有一个用例,我需要根据查询从mongo获取对象列表.但是,为了提高性能,我正在增加分页.因此,对于第一次调用我得到10个对象的列表,接下来我还需要10个.但我不能直接使用offset和pageSize,因为页面上显示的前10个对象可能已被修改[删除].

解决方案是找到传递的最后一个对象的Object Id,并在该ObjectId之后检索下一个10个对象.

请帮助如何使用Morphia mongo有效地完成它.

sorting pagination mongodb morphia

7
推荐指数
1
解决办法
3049
查看次数

是否可以将多种类型的对象存储到1个mongodb集合中?

使用文档oriënted数据库mongodb和Object Document Mapper(ODM)morphia

可以说我们有3个不同的类; Object,CategoryAction.
这些对象都存储在集合中; 对象,类别和动作.

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)

具有当前实现的文档存储如下:

  • Mongo (服务器/位置)
    • 商店(数据库)
      • 对象(集合)
        • 对象(文件)
        • 宾语
        • 宾语
      • 类别
        • categorie
        • categorie …

document-oriented-db mongodb morphia

7
推荐指数
1
解决办法
6326
查看次数

基于深度嵌套对象的单个字段的词素查询

我想根据一个对象的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)

java mongodb playframework morphia

6
推荐指数
1
解决办法
6624
查看次数

如何使用Java中的Morphia和Play框架从实体中检索特定字段

我有一个我在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)

我不确定我到底在做什么.

如果有人可以向我解释这是不是这样,我应该怎么做,并提供一个例子,那将是很棒的.

java mongodb playframework morphia

6
推荐指数
1
解决办法
5399
查看次数

使用morphia执行$ elemMatch查询时如何进行数值比较

我的文档具有以下结构:

{
"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对应的效果相同的查询.

java mongodb morphia

6
推荐指数
1
解决办法
508
查看次数

使用Morphia进行Spring Boot配置?

我不想利用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)

java spring mongodb morphia spring-boot

6
推荐指数
1
解决办法
3835
查看次数

如何在Morphia/MongoDB Java中创建复合唯一索引?

假设我有一个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 mongodb morphia

6
推荐指数
1
解决办法
3620
查看次数

Morphia vs Spring Data Mongo

我正在使用Java语言.我必须使用ORM框架和MongoDb作为Database.I有两个选项Morphia或Spring Data Mongo支持.到目前为止我能够获得详细信息,已经发现Spring Data Mongo更好用,因为: 1)它提供了更好的DAO开箱即用的内置类.2)它有更大的社区基础.

两者之间是否有基于性能的差异.如果哪一个在哪个条件下哪个更好.我也有多租户的要求.经过一点点搜索后我发现Spring Data Mongo中有非常简单的自定义实现做同样的事情.但是在Morphia,这有点困难.在Morphia diificult实现多租户(我们需要写很多锅炉板代码)

java morphia spring-mongodb

6
推荐指数
2
解决办法
4022
查看次数

从mongodb访问数据

我有以下几种类型的请求

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)

java mongodb morphia

6
推荐指数
1
解决办法
156
查看次数