0

質問はとても簡単です。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"
    }
  }
})

最後に、次のエラーが表示されます: 配列を含む対応するクエリ フィールドがないと、位置演算子を適用できません。

とにかくこの方法でドキュメントを更新する必要がありますか、それともすべての電話を送ってこのフィールドを更新する必要がありますか?

4

0 に答える 0