我想更新一個子數組的子文檔,但我不能指望數組中的元素位置始終相同,所以如何更新它。使用MongoDB,當元素位置未知時,如何更新子數組的子文檔?
例如,這裏是我的文檔,我只是想推另一個標籤的對象(鍵/ VAL)到tags
陣列的real_pagenum
:1的PDF與_id
的ObjectId("50634e26dc7c22c64d00000a")
{
"_id" : ObjectId("503b83dfad79cc8d26000004"),
"pdfs" : [
{
"_id" : ObjectId("50634e26dc7c22c64d00000a"),
"pages" : [
{
"real_pagenum" : 1,
"_id" : ObjectId("50634e74dc7c22c64d00002b"),
"tags" : [
{
"key" : "Item",
"val" : "foo"
},
{
"key" : "Item",
"val" : "bar"
}
]
},
{
"real_pagenum" : 2,
"_id" : ObjectId("50634e74dc7c22c64d00002b")
}
],
"title" : "PDF3",
"version" : 3
}
],
}
重申,我們的目標是首先由_id
,然後在右側頁面通過real_pagenum
瞄準正確的PDF和推成PDF格式的網頁的tags
陣列。
我曾嘗試:
db.projects.update({'pdfs.pdf_id':ObjectId("50634e25dc7c22c64d000007")},
{$push:{'pages.$.tags':{'key':'foo','val':'bar'}}},false,false);
但這並不得到我所需要的水平。我讀過我可以使用combination of the positional operator with actual element position,但我再次無法保證或不知道元素的位置。