我必须写用java复杂蒙戈查询,但我不能够做到这一点。
蒙戈查询看起来是这样的:
db.video.findOne( {
$or: [
{ key1: { $in : [764] } },
{ key2: {$in : [list2] } },
{ $and [ { key2 : 3}, {key4:67} ] }
]
})
我有写使用QueryBuilder的类上面的查询。 以什么方式我能做到吗?
谢谢
我必须写用java复杂蒙戈查询,但我不能够做到这一点。
蒙戈查询看起来是这样的:
db.video.findOne( {
$or: [
{ key1: { $in : [764] } },
{ key2: {$in : [list2] } },
{ $and [ { key2 : 3}, {key4:67} ] }
]
})
我有写使用QueryBuilder的类上面的查询。 以什么方式我能做到吗?
谢谢
使用QueryBuilder的查询应该是这样的
DBObject query = QueryBuilder.start().or(
QueryBuilder.start("key1").in(764).get(),
QueryBuilder.start("key2").in(keys).get(),
QueryBuilder.start().and("key3").is(3).and("key4").is(64).get()
).get();
考虑使用jongo (超过蒙戈-Java的应用程序的API),你可以简单地复制/粘贴查询从shell:
collection.findOne("{$or:[{key1: {$in:[764]}},{key2:{$in:[#]}}, {$and:[{key3:3},{key4:67}]}]}", keys).as(People.class);
我有同样的问题,我得到了另一种方式的解决方案:
ArrayList orList = new ArrayList();
ArrayList andList = new ArrayList();
orList.add(new BasicDBObject("key1", new BasicDBObject("$in", 764)));
orList.add(new BasicDBObject("key2", new BasicDBObject("$in", list2)));
andList.add(new BasicDBObject("key2", 3));
andList.add(new BasicDBObject("key4", 67));
orList.add(new BasicDBObject("$and", andList));
BasicDBObject query = new BasicDBObject("$or", orList);