【问题标题】:How to just rename a field in an aggregation pipeline without removing other fields?如何只重命名聚合管道中的字段而不删除其他字段?
【发布时间】:2022-11-12 09:22:27
【问题描述】:

伙计们。 我有一个聚合和一个字段映射,我需要重命名。问题是,结构没有定义,所以我真的不知道结果输出中会包含哪些属性。

最后,我需要在不删除其他字段的情况下重命名字段。 例子:

[
...
{
   field1: "value1", 
   field2: "value2",
   field3: "value2",
   field4: "value4",
}
...
]

例如,我想将输出字段 field2 重命名为 myNewField。使用 $project 我得到了:

[$project: {
  "myNewField": "$field2"       
}]

在这种情况下,只显示 myNewField:

`
[
...
{ 
   myNewField: "value2"
}
...
]
`

预期结果:

[
...
{
   field1: "value1", 
   myNewField: "value2",
   field3: "value2",
   field4: "value4",
}
...
]

感谢您有一个愉快的一天!

【问题讨论】:

  • 使用$addFields(或$set)代替$project

标签: mongodb mongodb-query aggregation-framework


【解决方案1】:

您可以在项目之前添加一个阶段,使用 $set 添加新字段并在 $project 中使用排除 (0) 和您不想输出的字段:

db.collection.aggregate([
  {
    "$set": {
      "myNewField": "$field2"
    }
  },
  {
    "$project": {
      "field2": 0
    }
  }
])

示例here

【讨论】:

    猜你喜欢
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2021-10-13
    • 2017-11-04
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多