我正在尝试使用QueryBuilder(MongoDB Java API 2.9.1)构建$ in查询。当查询是一个字符串数组时,我没有问题,但是当我尝试使用ObjectIds数组时,它不起作用(不返回任何内容)。
我能够成功运行查询并从控制台获取结果:
在控制台中查询: db.collection.find({removed:false,app_id:{$ in:[ObjectId(“4f75c533ac99d845186e19b2”),ObjectId(“4f75c533ac99d845186e19b3”)]}})
QueryBuilder创建的查询(MongoDB Java API 2.9.1):
Object [] ids;
Java代码: DBObject query = QueryBuilder.start(“app_id”)。in(ids).and(“removed”)。is(false).get();
DBObject上的ToString产生: {“app_id”:{“$ in”:[{“$ oid”:“4f75c533ac99d845186e19b2”}]},“已删除”:false}
我不确定我是做错了什么,或者API不支持和查询类型为ObjectId的$。有任何想法吗?
答案 0 :(得分:-2)
你的ID应该是org.bson.types.ObjectId
类型,所以这样的东西应该有效:
import org.bson.types.ObjectId;
ObjectId[] ids = new ObjectId[]{
new ObjectId("1234568abcd"),
new ObjectId("1234567abcd")};
DBObject query = QueryBuilder.start("app_id").in(ids)
.and("removed").is(false).get();