Sah*_*hal 6 mongodb mongodb-query aggregation-framework
我有一个像下面这样的文件,
{
"_id" : "59ba903dacea50d0d7d47168",
"sections" : [
{
"_id" : "59d9dd7947ce651544c5d4c1",
"sectionName" : "Section 1"
},
{
"_id" : "59d9dd8147ce651544c5d4c2",
"sectionName" : "Section 2"
},
{
"_id" : "59d9dd9747ce651544c5d4c3",
"sectionName" : "Section 3"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用投影将字段 _id 重命名为 id 和 sectionName 以使用查询命名
db.getCollection('tmp').aggregate([
{$project:{"sections.id":"$sections._id", "sections.name":"$sections.sectionName"}}
])
Run Code Online (Sandbox Code Playgroud)
所需的输出是:
{
"_id": "59ba903dacea50d0d7d47168",
"sections": [
{"id": "59d9dd7947ce651544c5d4c1", "name": "Section 1"},
{"id": "59d9dd8147ce651544c5d4c2", "name": "Section 2"},
{"id": "59d9dd9747ce651544c5d4c3", "name": "Section 3"}
]
};
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用,我做错了什么?
请注意,我并没有像在这个问题中那样尝试更新此文档,我想以所需的格式投影该文档。
fel*_*ins 10
如果我确实理解它,它应该通过$map运算符完成,如下所示:
db.getCollection('section').aggregate([
{
$project: {
sections: {
$map: {
"input": "$sections",
as: "sec",
in: {
"my_id": "$$sec._id",
"new_section_name": "$$sec.sectionName"
}
}
}
}
}
])
Run Code Online (Sandbox Code Playgroud)
输出类似于以下内容:
{
"waitedMS": NumberLong("0"),
"result": [
{
"_id": "59ba903dacea50d0d7d47168",
"sections": [
{
"my_id": "59d9dd7947ce651544c5d4c1",
"new_section_name": "Section 1"
},
{
"my_id": "59d9dd8147ce651544c5d4c2",
"new_section_name": "Section 2"
},
{
"my_id": "59d9dd9747ce651544c5d4c3",
"new_section_name": "Section 3"
}
]
}
],
"ok": 1
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3451 次 |
| 最近记录: |