4

我正在尝试使用 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) 创建的查询:

对象[] id;

Java 代码:DBObject query = QueryBuilder.start("app_id").in(ids).and("removed").is(false).get();

DBObject 上的 ToString 产生: { "app_id" : { "$in" : [ { "$oid" : "4f75c533ac99d845186e19b2"}]} , "removed" : false}

不确定我是否做错了什么或 API 不支持和 $in 类型的 ObjectId 查询。有任何想法吗?

4

1 回答 1

-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();
于 2012-11-14T13:02:11.203 回答