0

MongoDB があり、2 つ以上のレコードを取得して、これをマップに入れたいと考えています。以下のコードは、1 つquery.put(ïd", "7");しかない場合は問題なく動作しますが、以下のコードのように 2 つ以上入れると機能しません。

    Map<Object,Object> map= new HashMap<Object,Object>();
    DBCollection collection = database.getCollection("Members");
    BasicDBObject query = new BasicDBObject();
    query.put("id", "7");
    query.put("id", "3");
    DBCursor cursor = collection.find(query);
    DBObject one;
    while(cursor.hasNext()) {
        one = cursor.next();
        map.put(one.get("id"),one.get("name"));
    }

マップに 2 つ以上のレコードを取得するにはどうすればよいですか? SQLの場合、同等のものは次のようになりますSELCT * FROM Member WHERE id = 7 AND id = 3

リストをクエリとして与えることができれば、さらに完璧になりますが、これが可能かどうかはわかりません。

4

1 に答える 1

5

次のような$inoperatorが必要だと思います。

Map<Object,Object> map= new HashMap<Object,Object>();
DBCollection collection = database.getCollection("Members");
BasicDBObject query = new BasicDBObject();
query.put("id", new BasicDBObject("$in", new Integer[] {3, 7}));
DBCursor cursor = collection.find(query);
DBObject one;
while(cursor.hasNext()) {
    one = cursor.next();
    map.put(one.get("id"),one.get("name"));
}

...値がIntegersであると仮定します。BasicDBList配列とインスタンスの両方がサポートされていると思います。

于 2011-07-24T11:47:53.803 に答える