java - mongodb java驱动程序在聚合/投影操作中隐藏id字段

标签 java mongodb aggregation-framework

我正在使用 java mongodb 驱动程序执行聚合操作,我遵循了文档中的示例(粘贴在下面)。据此,_id 字段应该被隐藏。但是,根据我自己的代码以及此示例的输出的经验,即使将投影值设置为 0(它在 mongo shell 中工作),_id 字段也不会隐藏。有谁知道这是否是 mongodb java 驱动程序中的错误?还是我做错了什么?

// 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 字段来自 $group 运算符。如果要将其重命名回 department,请将另一个 $project 添加到管道的末尾并将 _id 转换为 department。

关于java - mongodb java驱动程序在聚合/投影操作中隐藏id字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14312910/

相关文章:

java - 图像的相对路径 - Selenium

java - 如何在 Java 中关闭线程?

node.js - 如何将 'resolve' MongoDB 对象转换为 Nodejs 中的特定 JSON 结构?

mongodb - Mongo 根据字段删除对象数组中的重复项

node.js - MongoDB - 过滤条件和 3-deep 对象

Java 进程的内存无限增长,但 MemoryMXBean 报告稳定堆和非堆大小

java - 导入 javax.annotation.* 无法在 Eclipse 的 Java 10 编译器中解析

mongodb - Azure 上的 Cosmos 或 MongoDB

database - 如何在 MongoDB 上进行旋转?

Mongodb 查询用于计算所有文档中的不同值