我有一個包含嵌套陣列 array_field 的檔案:
{
"_id": {
"$oid": "1"
},
"id": "1",
"array_field": [
{
"data": [
{
"regions": [
{
"result": {
"item": [
"4",
"5",
"3"
]
}
},
{
"result": {
"item": [
"5"
]
}
},
{
"result": {
"item": [
"1"
]
}
}
]
}
]
}
]
}
我需要添加新欄位,例如 new_added_field,其中每個陣列元素來自 array_field.data.regions.result.item 并從檔案中洗掉 array_field。
例如:
{
"_id": {
"$oid": "1"
},
"id": "1",
"new_added_field": [4,5,3,5,1]
}
我想我可以在 $unwind 或 $map 的幫助下做到這一點,但是遇到困難并且需要圓頂提示,我如何在 op 聚合的幫助下做到這一點?
uj5u.com熱心網友回復:
如你所說,
db.collection.aggregate([
{
"$project": {
newField: {
"$map": {
"input": "$array_field",
"as": "m",
"in": "$$m.data.regions.result.item"
}
}
},
},
{ "$unwind": "$newField" },
{ "$unwind": "$newField" },
{ "$unwind": "$newField" },
{ "$unwind": "$newField" },
{
"$group": {
"_id": "$_id",
"newField": { "$push": "$newField" }
}
}
])
作業Mongo游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/477730.html
