假设集合中有两个文档:
[
{
"_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
引用了本文档的内容