3

私はモンゴにやや慣れていません。複数の値のフィールドに対してクエリを実行したい。SQLでは、次のようなものが必要です:

select * from table where field in ("foo","bar")

mongodb に次のドキュメントがあるとします。

{
  "_id":"foo"
}
{
  "_id":"bar"
}

私は単にこのクエリを模倣したい:

db.coll.find( { _id: { $in: [ "foo", "bar" ] } } );

_id が「foo」または「bar」であるすべてのドキュメントを取得したいと考えています。そして、Javaドライバーを使用してこれを行いたいと思います。

私は何かを試しました

BasicDBObject query = new DBObject()
query.append("_id","foo");
query.append("_id","bar");
collection.find(query);

しかし、それは「バー」ドキュメントのみを返すようです。

助けてください

4

1 に答える 1

5

$in演算子を使用するにはQueryBuilder、次のようなクエリを作成する方が簡単な場合があります。

QueryBuilder qb = new QueryBuilder();
qb.put("_id").in(new String[] {"foo", "bar"});
collection.find(qb.get());

または少しきれい:

DBObject query = QueryBuilder.start("_id").in(new String[] {"foo", "bar"}).get();
collection.find(query);
于 2013-03-07T03:03:42.637 に答える