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