[英]mongodb update nested array from a array
我在 mongodb 文檔中有一個數組。
{
_id: 1,
jobs:[
{
_id:1,
time: "08:00",
status: "pending",
user: 'user1'
},
{
_id:2,
time: "09:00",
status: "pending",
user: 'user1'
},
{
_id:3,
time: "07:30",
status: "done",
user: 'user2'
}
]
}
現在我有一個像這樣更新的作業數組。
jobs:[
{
_id:1,
time: "10:00",
status: "done"
},
{
_id:2,
time: "11:00",
status: "done"
}
]
更新的文件應該是這樣的
{
_id: 1,
jobs:[
{
_id:1,
time: "10:00", // updated
status: "done" // updated
user: 'user1'
},
{
_id:2,
time: "11:00", // updated
status: "done", // updated
user: "user1"
},
{
_id:3,
time: "07:30",
status: "done",
user: 'user2'
}
]
}
我嘗試使用 update 和 $set 到目前為止沒有運氣
如何將更新數組中的唯一值更新到 mongodb 文檔中? 提前致謝
一種選擇是使用帶有管道的更新:
newData
添加到文檔中$map
遍歷jobs
項目,對於每個項目,將其與newData
中的匹配項目合並。db.collection.update(
{_id: 1},
[{$addFields: {
newData: [
{_id: 1, time: "10:00", status: "done"},
{_id: 2, time: "11:00", status: "done"}
]
}
},
{$project: {
jobs: {
$map: {
input: "$jobs",
in: {
$mergeObjects: [
"$$this",
{$arrayElemAt: ["$newData", {$indexOfArray: ["$newData._id", "$$this._id"]}]}
]
}
}
}
}
}
])
看看它在操場上的例子是如何工作的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.