4

QueryBuilder(MongoDB Java API 2.9.1)を使用して$inクエリを作成しようとしています。クエリが文字列の配列である場合は問題ありませんが、ObjectIdの配列で試行すると、機能しません(何も返されません)。

クエリを正常に実行し、コンソールから結果を取得できます。

コンソールでのクエリ: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"}]}、 "removed":false}

私が何か間違ったことをしているのか、APIがObjectIdタイプの$inクエリをサポートしていないのかわからない。何か案は?

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 に答える