База данных Mongo, ВЫБЕРИТЕ * ГДЕ id = 3 И id = 4 - PullRequest
0 голосов
/ 24 июля 2011

У меня есть MongoDB, и я хочу получить две или более записей и поместить их в карту. Код ниже работает нормально, если у меня есть только один query.put(ïd", "7");, но он не работает, если я добавлю два или более, как в коде ниже.

    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"));
    }

Как бы я мог получить две или более записей на карте? Для SQL эквивалент будет SELCT * FROM Member WHERE id = 7 AND id = 3

Еще более совершенным было бы, если бы я мог предоставить список в качестве запроса, но не уверен, что это возможно.

1 Ответ

5 голосов
/ 24 июля 2011

Я думаю, вам нужен оператор $in , что-то вроде:

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"));
}

... при условии, что значения равны Integer с. Я думаю, что оба массива и BasicDBList экземпляры поддерживаются.

...