動的subdocument
に追加したい場合は、さらに先に進むことができるようです。コードは次のとおりです。
db.users.update({"pup.cmn.id":id}, {"$addToSet":{"pup.cmn":{"abus":email}}})
これによりエラーが発生します:
OperationFailure: can't append to array using string field name: cmn
次に、追加すると、次のようにpositional element
なります。
db.users.update({"pup.cmn.id":id}, {"$addToSet":{"pup.$.cmn":{"abus":email}}})
"cmn" :
[
{
"fto" : ObjectId("5190e8a53a5f3a0c102af045")
"id" : "14.05.2013 12:29:53"
},
{
"abus" : "u...@example.com"
}
]
ご覧のとおり、同じレベルに追加されますが、アプリケーションでエラーが発生するため、それは望ましくありません。