mongodb(java)包括名称的id字段

时间:2013-01-25 05:14:45

标签: java mongodb grouping projection

我正在跟踪java中的mongo db聚合,示例显示了下面的管道。我要做的是添加一个名为department的附加字段,其中包含部门值(因此在这种情况下,它将具有相同的值_id字段。我尝试在其中添加另一个字段groupFields new BasicDBObject("department",$department),但不起作用。

// create our pipeline operations, first with the $match
DBObject match = new BasicDBObject("$match", new BasicDBObject("type", "airfare") );

// build the $projection operation
DBObject fields = new BasicDBObject("department", 1);
fields.put("amount", 1);
fields.put("_id", 0);
DBObject project = new BasicDBObject("$project", fields );

// Now the $group operation
DBObject groupFields = new BasicDBObject( "_id", "$department");
groupFields.put("average", new BasicDBObject( "$avg", "$amount"));
DBObject group = new BasicDBObject("$group", groupFields);

// run aggregation
AggregationOutput output = collection.aggregate( match, project, group );

输出

{"_id" : "Human Resources" , "average" : 74.91735537190083} , 
{"_id" : "Sales" , "average" : 72.30275229357798} ,
{"_id" : "Engineering" , "average" : 74.1}

1 个答案:

答案 0 :(得分:1)

尝试切换顺序:

AggregationOutput output = collection.aggregate( match, group, project);

或者您可以在群组后添加其他项目。如果您在$project之前使用$group,它只会将值传递给组运算符,而不是直接传递给输出。