サブ配列のサブドキュメントを更新しようとしていますが、配列内の要素の位置が常に同じであるとは期待できません。更新するにはどうすればよいですか。
たとえば、これが私のドキュメントです。別のタグ オブジェクト (key/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
}
],
}
繰り返しますが、目標は、最初に で正しい pdf をターゲットにし_id
、次に で正しいページをターゲットにして、その pdf のページの配列real_pagenum
にプッシュすることです。tags
私が試した:
db.projects.update({'pdfs.pdf_id':ObjectId("50634e25dc7c22c64d000007")},
{$push:{'pages.$.tags':{'key':'foo','val':'bar'}}},false,false);
しかし、それは私が必要とするレベルには達しません。位置演算子と実際の要素 positionの組み合わせを使用できることを読みましたが、要素の位置を保証または知ることはできません。