【发布时间】:2018-03-09 11:57:24
【问题描述】:
我有一个类似下面的文件,
{
"_id" : "59ba903dacea50d0d7d47168",
"sections" : [
{
"_id" : "59d9dd7947ce651544c5d4c1",
"sectionName" : "Section 1"
},
{
"_id" : "59d9dd8147ce651544c5d4c2",
"sectionName" : "Section 2"
},
{
"_id" : "59d9dd9747ce651544c5d4c3",
"sectionName" : "Section 3"
}
]
}
我正在使用投影将字段 _id 重命名为 id 并将 sectionName 重命名为使用查询的名称
db.getCollection('tmp').aggregate([
{$project:{"sections.id":"$sections._id", "sections.name":"$sections.sectionName"}}
])
想要的输出是:
{
"_id": "59ba903dacea50d0d7d47168",
"sections": [
{"id": "59d9dd7947ce651544c5d4c1", "name": "Section 1"},
{"id": "59d9dd8147ce651544c5d4c2", "name": "Section 2"},
{"id": "59d9dd9747ce651544c5d4c3", "name": "Section 3"}
]
};
但是好像不行,我做错了什么?
请注意,我不会像 in this question 那样尝试更新此文档,我想以所需的格式投影文档。
【问题讨论】:
-
我认为您只是语法错误。试试
"$sections._id":"sections.id"。 -
语法没问题。它执行但结果不是我想要的。它使用 _id 和 sectionNames 的所有值创建数组 id 和名称。
-
想要的输出是什么?
-
@felipsmartins 将
_.id字段更改为.id我猜 -
以下是所需的输出 { "_id" : "59ba903dacea50d0d7d47168", "sections" : [ { "id" : "59d9dd7947ce651544c5d4c1", "name" : "Section 1" }, { "id" :“59d9dd8147ce651544c5d4c2”,“名称”:“第 2 节”},{“id”:“59d9dd9747ce651544c5d4c3”,“名称”:“第 3 节”}]}
标签: mongodb mongodb-query aggregation-framework