Java mongo morphia或查询

时间:2017-12-14 04:04:33

标签: java mongodb morphia

我有一个id列表,它是or语句的一部分,但morphia查询或操作只有一个构造函数。有人可以帮助我将这些ID添加到查询中。 LIST是动态的,它的值一直在变化。 1,2,3仅仅是为了举例

结果的结果应该是:

  

{(" $或":[{" id":" 1"},{" id":2},{ " ID":" 3"}])}

for (string id : ids) {
       Criteria id = query.criteria("id").equals(id);
       query.or(id)
 }


for (string id : ids) {
     Criteria id  = query.criteria("id").equals(id);
       query.or.add(id)
 }

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

Query<YourEntity> query = datastore.find(YourEntity.class);            

query.or(
  query.criteria("id").equal("1"),
  query.criteria("id").equal("2"),
  query.criteria("id").equal("3")
);

List<YourEntity> result = query.asList();

更新:对于动态尝试关注(未测试):

Query<YourEntity> query = datastore.find(YourEntity.class);            

for(int i = 0; i < yourArrayOfObjects.length; i++){
  query.or(
    query.criteria("id").equal(yourArrayOfObjects[i].getId()),
  );
}

List<YourEntity> result = query.asList();

您应该能够将不同的MongoDB查询操作链接到

答案 1 :(得分:1)

所以我发现了闷热。 Morphia查询dosnt允许它,但我在运算符中使用了$ 在BasicDBObject中,您可以在下面看到:

List<String> list= new ArrayList();
ids.add("1");
ids.add("2");
ids.add("3)
BasicDBObject basicObject = new BasicObject("$in", list);
query.filter("id", basicObject);

所以重点是我使用In而不是Or。 结果将是

{id:{"$in":["1","2","3"]}}