Код Java для запроса агрегирования mongodb

Я новичок в Java. Я проверил несколько примеров с совокупным использованием, но все еще не сомневаюсь.

 db.employee.aggregate({$unwind: '$dp.fin.Record'},       
 {$match:{"dp.mon":"patch.metrics",'dp.fin.Record':{$exists:1}}},      
 {$group:{_id: '$dp.fin.Record', count:{$sum:1}}},      
 {$project:{count:'$count'}},   {$group:{_id:'Total
 Count',total:{$sum:'$count'}}});

Может ли кто-нибудь помочь мне написать эквивалент Java. Я сомневаюсь, как мы можем передать несколько условий соответствия, как я показал выше. Я пытаюсь, как показано ниже

BasicDBObject unwind = new BasicDBObject("$unwind",
"$dp.fin.Record"); DBObject match = new BasicDBObject("$match", new
BasicDBObjectBuilder(""));

person Aman    schedule 08.10.2014    source источник


Ответы (2)


Думаю, это поможет:

DBObject unwind = new BasicDBObject("$unwind", "$dp.fin.Record");
DBObject match  = BasicDBObjectBuilder.start().push("$match")
                  .add("dp.mon", "patch.metrics")
                  .push("dp.fin.Record").add("$exists", true).get();
DBObject group1 = BasicDBObjectBuilder.start().push("$group")
                  .add("_id", "$dp.fin.Record")
                  .push("count").add("$sum", 1).get();
DBObject project= BasicDBObjectBuilder.start().push("$project")
                  .add("count", "$count").get();
DBObject group2 = BasicDBObjectBuilder.start().push("$group")
                  .add("_id", "Total Count")
                  .push("total").add("$sum", "$count").get();
// Suppose collection has been prepared
AggregationOutput aggr = collection.aggregate(Arrays.asList(unwind, match, group1, project, group2));
person Wizard    schedule 08.10.2014

Если ваш запрос верен. Вы можете подойти к этому ниже кодам.

//Forming Unwind parts
DBObject unwind = new BasicObject("$unwind","$dp.fin.record");

//Forming Match parts
DBObject match = new BasicObject();
match.put("dp.mon","patch.metrics")
match.put("dp.fin.Record", new BasicDBObject("$exists",1));

//Forming Group parts
DBObject group1 = new BasicDBObject();
group1.put("_id", '$dp.fin.Record');
group1.put("count", new BasicDBObject("$sum", 1));

//Forming Project parts
DBObject project = new BasicDBObject();
project.put("count", '$count');

//Forming Group parts
DBObject group2 = new BasicDBObject();
group2.put("_id", 'Total Count');
group2.put("total", new BasicDBObject('$sum', '$count'));


/**
 * Executing aggregation 
 */
AggregationOutput output = mongoOperations.getCollection("employee").aggregate(unwind,
                                                                            new BasicDBObject("$match",match),
                                                                            new BasicDBObject("$group",group1),
                                                                            new BasicDBObject("$project",project),
                                                                            new BasicDBObject("$group",group2));

Надеюсь, это может вам помочь.

person Newbie    schedule 08.10.2014