[英]update one element of array of objects in mongodb
我有以下文件:
{
_id: ObjectId('111111111111111111114444'),
books: [
{
id: ObjectId('111111111111111111113333'),
pictures: []
},
{
id: ObjectId('111111111111111111112222'),
pictures: []
}
],
// others attributes
}
我需要做的是在pictures
添加一個元素。 請記住,我有documentId
是documentId
的 id,而bookId
是books元素的 Id。
如果我想將元素{description: "nice picture"}
到1111111111111111111114444一書中的文檔1111111111111111111113333 ,更新后的文檔看起來像
{
_id: ObjectId('111111111111111111114444'),
books: [
{
id: ObjectId('111111111111111111113333'),
pictures: [
{
description: "nice picture"
}
]
},
{
id: ObjectId('111111111111111111112222'),
pictures: []
}
],
// others attributes
}
詢問
id=2
合並對象,則在書籍上映射,其中圖片包含新元素id=2
不要換書*我使用 1,2,3 作為 ids(它的代碼相同)
update({"_id" : 1},
[{"$set":
{"books":
{"$map":
{"input": "$books",
"in":
{"$cond":
[{"$eq": ["$$book.id", 2]},
{"$mergeObjects":
["$$book",
{"pictures":
{"$concatArrays":
["$$book.pictures", [{"description": "nice picture"}]]}}]},
"$$book"]},
"as": "book"}}}}])
編輯
詢問
update({"_id" : 1},
[{"$set":
{"books":
{"$map":
{"input": "$books",
"in":
{"$cond":
[{"$eq": ["$$book.id", 2]},
{"$mergeObjects":
["$$book",
{"pictures":
{"$concatArrays":
[{"$cond":
[{"$isArray": ["$$book.pictures"]}, "$$book.pictures",
[]]},
[{"description": "nice picture"}]]}}]},
"$$book"]},
"as": "book"}}}}])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.