Как преобразовать ниже запрос в код Java для драйвера Mongo Java?
db.post.aggregate(
[
{ $match : {"name" :{'$in': ["michael", "jordan"] } }},
{ $group : { _id : "$game.id" , count : { $sum : 1 } } }
]
)
Моя функция не работает:
DBObject match = new BasicDBObject('$match', new BasicDBObject("name", names));
Оператор $in
принимает и массив или список аргументов, поэтому в любом случае будет выполнен список. Но вам нужно сформировать соответствующий BSON. Отступы вашего кода помогают визуализировать:
BasicDBList inArgs = new BasicDBList();
inArgs.add("michael");
inArgs.add("jordan");
DBObject match = new BasicDBObject("$match",
new BasicDBObject("name",
new BasicDBObject("$in", inArgs )
)
);
DBObject group = new BasicDBObject("$group",
new BasicDBObject("_id","$game.id").append(
"count", new BasicDBObject("$sum",1)
)
);
Согласно документации агрегирования, ваш запрос должен выглядеть так:
DBObject match = new BasicDBObject('$match', new BasicDBObject('name', new BasicDBObject('$in', names)));