2015-11-10 2 views
0

Я пытаюсь выполнить запрос в моей базе данных с помощью драйвера mongo java, но перед вами стоит какая-то проблема. Я выполнил этот запрос из оболочки mongo и, похоже, работает нормально.Совокупный запрос MongoDB с драйвером JAVA

db.userData.aggregate([ { $group: {"_id": "$username"}},{$group:{"_id":"userCount","counter":{$sum:1}}}]) 

Это возвращает мне общее количество уникальных пользователей в моей базе данных.

Результат

{ "_id": "UserCount", "счетчик": 5}

Я хочу попробовать то же самое в JAVA. Я могу выполнять агрегированные запросы с 1 $ -группой, как и следующие (возвращает уникальных пользователей с количеством документов в базе данных для этого конкретного пользователя).

AggregateIterable<Document> iterable = db.getCollection("userData").aggregate(asList(
    new Document("$group", new Document("_id", "$username").append("count", new Document("$sum", 1))))); 

Но я не знаю, что делать, если мой запрос дважды использует $ group.

ответ

0
AggregateIterable<Document> iterable = db.getCollection("userData").aggregate(asList(
    new Document("$group", new Document("_id", "$username").append("count", new Document("$sum", 1))), 
    new Document("$group", new Document("_id", "$username").append("count", new Document("$sum", 1))))); 

Это как-то возвращает правильный ответ, но это меня смущает, как он работает. Может кто-нибудь объяснить немного.