将MongoDB文档的所有字段包装成一个根/顶层对象



假设集合中有两个文档:

[
{
"_id": 0,
"name": "aaaa",
"phone": 111
},
{
"_id": 1,
"name": "bbbb",
"phone": 999
}
]

我想运行一个聚合管道,将合并/包装/组合所有字段到一个顶级根对象称为lead。没有提及/硬编码查询中的字段名。

预期输出:

[
{
"lead": {
"_id": 0,
"name": "aaaa",
"phone": 111
}
},
{
"lead": {
"_id": 1,
"name": "bbbb",
"phone": 999
}
}
]

使用$replaceWith阶段将输入文档替换为新的输出文档。要获取每个(原始)文档,您需要使用$$ROOT变量。

db.collection.aggregate([
{
$replaceWith: {
"lead": "$$ROOT"
}
}
])

Demo @ Mongo Playground

从这个答案中得到了一些帮助,并且能够使用$project实现它:

db.collection.aggregate([
{
$project: {
lead: "$$ROOT",
_id: false
}
}
])

操场上联系

MongoDB中的$$ROOT引用了本文档的内容

相关内容

  • 没有找到相关文章

最新更新