我有这样一个问题(简化):

db.collection.aggregate([
  { $match: { main_id: ObjectId("58f0f67f50c6af16709fd2c7") } }, 
  {
    $group: {
      _id: "$name",
      count: { $sum: 1 },
      sum: { $sum: { $add: ["$P31", "$P32"] } }
    }
  }
])

我从Java执行这个查询,我想把它映射到我的类上,但我不想把_id映射到name字段上.因为如果我这样做:

@JsonProperty("_id")
private String name;

然后,当我将这些数据保存回mongo时(经过一些修改),数据以名称_id保存,同时我希望生成一个真实的Id.

那么,$group手术后我该怎么做?

推荐答案

您可以通过在管道末端添加$project个阶段来实现这一点,如下所示:

{ $project: {  
      _id: 0,
      name: "$_id",
      count: 1,
      sum: 1
   }
}

在线试试:mongoplayground.net/p/QpVyh-0I-bP

Mongodb相关问答推荐

在服务器上部署后端时判断??=默认判断

如何获取键值对的对象,其中值仅具有 mongoDB 中的投影字段

将数据从一个集合插入另一个集合的聚合

在延迟函数中重用 context.WithTimeout

对 MongoDB 集合中的对象数组进行排序

在数据中只有月份和年份的 mongodb 中字符串的日期时间

在mongodb中,如何使用聚合来获取字段之间的对应关系

Mongoose 和 MongoDB,如何在具有多个引用的两个模型之间创建关系?

MongoDB:设置 Windows 服务

MongoDB插入引发重复键错误

Docker 内部的 Mongo 身份验证

在 Mongoose 中填写所有必填字段

MongoDB $or 查询

如何获取 Mongoid 文档的所有字段名称?

MongoDB 查找精确的数组匹配,但顺序无关紧要

判断 mongoDB 是否连接

如何在第一个文档中恢复 MongoDB ChangeStream 而不仅仅是在我开始收听后更改

MongoDB 的 MMAPV1、WiredTiger 或 In-Memory StorageEngine 如何 Select ?

如何从mongoose中的对象 ID 获取创建日期?

PyMongo 创建具有 2 个或更多字段的唯一索引