我有一个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)
}
答案 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"]}}