我有以下檔案:
[
{
"_id": "a",
"elements": [
{
"mode": "ALWAYS",
"type": "RED",
"number": "123"
},
{
"mode": "ALWAYS",
"type": "BLUE",
"number": "99123124"
}
]
},
{
"_id": "b",
"elements": [
{
"mode": "ALWAYS",
"type": "RED",
"number": "123"
},
{
"mode": "ALWAYS",
"type": "BLUE",
"number": "123123123"
}
]
}
]
而且我只需要為單個條目復制“藍色”型別的元素,但將其型別更改為綠色。我怎樣才能做到這一點?我嘗試使用 db.col.push 沒有成功,但我無法復制陣列“elements”的特定條目“BLUE”。
這是預期的目標:
[
{
"_id": "a",
"elements": [
{
"mode": "ALWAYS",
"type": "RED",
"number": "123"
},
{
"mode": "ALWAYS",
"type": "BLUE",
"number": "99123124"
},
{
"mode": "ALWAYS",
"type": "GREEN",
"number": "99123124"
}
]
},
{
"_id": "b",
"elements": [
{
"mode": "ALWAYS",
"type": "RED",
"number": "123"
},
{
"mode": "ALWAYS",
"type": "BLUE",
"number": "123123123"
},
{
"mode": "ALWAYS",
"type": "GREEN",
"number": "123123123"
}
]
}
]
uj5u.com熱心網友回復:
詢問
- 管道更新需要 MongoDB >= 4.2
- 映射并將藍色轉換為綠色
- 過濾掉那些不是藍調的
- 將這些綠色添加到初始元素陣列
測驗代碼在這里
update(
{},
[{"$set":
{"elements":
{"$concatArrays":
["$elements",
{"$filter":
{"input":
{"$map":
{"input": "$elements",
"in":
{"$cond":
[{"$eq": ["$$this.type", "BLUE"]},
{"$mergeObjects": ["$$this", {"type": "GREEN"}]}, null]}}},
"cond": {"$ne": ["$$this", null]}}}]}}}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377416.html
標籤:MongoDB
上一篇:華為云首席架構師顧炯炯:敢為人先,探索架構創新之路如何走
下一篇:不考慮空值的排序
