当前位置: 首页 > 面试题库 >

mongo的组聚合后是否可以重命名_id字段?

令狐跃
2023-03-14
问题内容

我有这样的查询(简体):

db.report.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操作之后重命名“ _id”?


问题答案:

您可以通过
$project

在管道的末尾添加一个阶段来实现此目的,如下所示:

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

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



 类似资料:
  • 问题内容: 我正在寻找一种重命名Hashmap密钥的方法,但是我不知道在Java中是否可行。 问题答案: 尝试删除该元素,然后使用新名称再次放置它。假设地图中的键是,则可以通过以下方式实现:

  • 问题内容: 我目前正在使用jar-with-dependencies程序集创建这样的jar。但是,我的罐子的名称有点长。 由于AS400上的RPG程序正在使用此jar,因此我想缩短它,以使这些开发人员的工作更加轻松。但是,除了手工之外,我还没有找到一种方法来从通常的罐子中重命名罐子。我想要类似的东西 无论如何,在没有基本复制jar-with-dependencies程序集描述符并将其完全调用的情况

  • 问题内容: 1个 结果集 : 2个 结果集2: 有没有办法可以做到这一点: 我想在RHEL 5上使用Sybase 12.5的解决方案,我也想知道在其他任何数据库系统中是否可行。 -–谢谢您的回答- 问题答案: 通过为该列使用CASE / WHEN并基于true / false求和1或0,您可以在同一查询中获得这两者。此外,如果您希望将另一个值的总和作为另一个,则可以执行相同的操作列…只需将其替换为

  • 我正在用PySpark DataFrames分析一些数据。假设我有一个正在聚合的数据帧< code>df: 这将给我: 聚合工作得很好,但我不喜欢新的列名。有没有办法将此列重命名为人类可以从方法中读取的内容?也许更类似于中的操作:

  • 我想使用spring cloud stream api聚合来自主题的事件。因此,我使用kstream作为输入。 现在我想使用聚合器将我的新对象存储在KeyValue存储区中,所以我使用以下代码: 为什么我只能使用字符串作为初始值设定项,不可能使用任何对象? 我错过什么了吗?

  • 问题内容: 基本路线是这样的: 是否可以命名该路由并在任何模板中使用它,以便可以像这样使用它: 灵感来自Django :) 问题答案: 没有开箱即用的机制。但是,您可以模仿Django的样式:定义文件,该文件将包含URL数组。首先开始: myviews.js urls.js 现在在 app.js (或任何主文件)中,您需要将URL绑定到Express。例如这样: app.js 现在,您可以定义自定