0

次のようなドキュメントがあるとします。

{
  "_id": ObjectId("50b6a7416cb035b629000001"),
  "businesses": [{
    "name": "Biz1",
    "id": ObjectId("50b6bc953e47dc923e000001")
  }, {
    "name": "Biz2",
    "id": ObjectId("50b6ccebae0513bf52000001")
  }, {
    "name": "Biz3",
    "id": ObjectId("50b6d015c58b414156000001")
  }, {
    "name": "Biz4",
    "id": ObjectId("50b6d0c8a4cdd5e356000001")
  }]
}

削除したい

{
        "name": "Biz3",
        "id": ObjectId("50b6d015c58b414156000001")
      }

一連のビジネスから。私はこれを試しました(明確にするためにIDの代わりにビジネス名を使用しています):

db.users.update({'businesses.name':'Biz3'},{$pull:{'businesses.name':'Biz3'}})

しかし、もちろんうまくいきませんでした。これを行うとドキュメントが返されるため、クエリ部分が正しいことがわかります。

db.users.find({'businesses.name' : 'Biz3'})

したがって、問題は更新部分にあります。

4

1 に答える 1

2

簡単なlilテストを実行しただけで、これは機能します

やってみるdb.users.update({'businesses.name':'Biz3'},{$pull:{'businesses':{'name':'Biz3'}}})べきだと思います

于 2012-12-12T01:42:49.543 に答える