Java mongo吗啡或查询

Java mongo morphia or query

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

结果的结果应该是:

{("$or":[{"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)
 }

您可以执行以下操作:

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 查询操作链接在一起

所以我找到了sulotion。 Morphia 查询不允许它,但我使用 $in 运算符 在 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"]}}