【问题标题】:Merge documents into single document将文档合并为单个文档
【发布时间】:2023-03-15 06:27:01
【问题描述】:

如何使用 mongodb 聚合管道获得最终结果?

我有以下文件

{ 
    "_id" : "aaa", 
    "Count" : 137.0
}
{ 
    "_id" : "bbb", 
    "Count" : 11.0
}
{ 
    "_id" : "ccc", 
    "Count" : 236.0
}

我需要将它们合并成一个看起来像这样的单个文档..

{
    aaa: 137,
    bbb: 11,
    ccc: 236
}

谢谢!

【问题讨论】:

标签: mongodb aggregation-framework


【解决方案1】:

您可以使用以下聚合。

使用$arrayToObject 将带值的数组转换为对象,然后使用$mergeObjects 将所有文档合并为单个文档。

$replaceRoot 将结果提升为置顶。

db.colname.aggregate([
  {"$group":{
    "_id":null,
    "results":{"$mergeObjects":{"$arrayToObject":[[["$_id","$Count"]]]}}
  }},
  {"$replaceRoot":{"newRoot":"$results"}}
])

【讨论】:

  • 谢谢@Veeram!有用。不过有一个问题 - 为什么要将数组嵌套两层?
  • 不客气。 $arrayToObject 接受一个二元素数组的数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 2010-10-08
相关资源
最近更新 更多