java - mongodb (java) 包括按名称排列的 id 字段

标签 java mongodb grouping projection

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

// 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}

最佳答案

尝试切换顺序:

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

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

关于java - mongodb (java) 包括按名称排列的 id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14515759/

相关文章:

sql - 如何按行和列分组?

java - 重定向到新 URL 时小程序崩溃

java - 分配给多维数组中的 arr[x][y] 时出现 NullPointerException

java - 如何从线程触发 PropertyChange 事件?

node.js - TypeORM 和 MongoDB 和存储库 : Cannot read property 'prototype' of undefined

mongodb - $concatArrays 不适用于现有的多数组字段

object - lodash 链接 groupBy

java - GLSL - 仅对一种纹理产生效果

node.js - mongodb 在 linux node.js 上安装错误

sorting - Splunk:如何获取每组的 N 个最新值?