質問はとても簡単です。mongoDb に次のドキュメントがあります。
_id : ObjectId("519e3c14ade67153e9a003a0")
status:1,
name:"name",
details:
{
crm:115,
webs:
[
{ tag:"blog" , url:"http://..."}
],
contacts:
[
{
_id:ObjectId("009e37e1ade67153e9a0039e"),
name:"me",
phones:
[
{ tag:"home", number:"123..." },
{tag:"mobile", number:"123456789"}
]
}
]
}
これを行うサブドキュメント details.contacts の電話用に更新しようとしています:
db.new.update(
{
_id : ObjectId("519e3c14ade67153e9a003a0"),
"details.contacts._id": ObjectId("009e37e1ade67153e9a0039e"),
"details.contacts.phones.tag":"home"
},
{
$set:
{
"details.contacts.$.phones.$":
{
tag:"home",
number:"965923777"
}
}
})
最後に、次のエラーが表示されます: 配列を含む対応するクエリ フィールドがないと、位置演算子を適用できません。
とにかくこの方法でドキュメントを更新する必要がありますか、それともすべての電話を送ってこのフィールドを更新する必要がありますか?