1
{
"_id": ObjectId("552cd780e4b042752e540df5"),
"source": [
    {
        "bookid": ObjectId("552cd77e31456e192df6ad8e"),
        "isActive": false
    },
    {
        "bookid": ObjectId("552cd77e31456e192df6ad8a"),
        "isActive": true
    }
]
}

条件が is である上記のドキュメントを更新し、その特定のドキュメント フィールドを として更新する必要source.bookidObjectId("552cd77e31456e192df6ad8e")ありisActiveますfalse。だから、私が必要とする結果の出力

{
"_id": ObjectId("552cd780e4b042752e540df5"),
"source": [
    {
        "bookid": ObjectId("552cd77e31456e192df6ad8e"),
        "isActive": false
    },
    {
        "bookid": ObjectId("552cd77e31456e192df6ad8e"),
        "isActive": true
    }
]
}

この更新クエリを実行する方法を教えてください。また、サブ ドキュメント配列にすべての「isActive」が false として含まれているすべてのドキュメントを取得することは可能ですか?

4

1 に答える 1

0

以下のように、キーの更新をネストするクエリを使用するには、 mongo update ドキュメントを使用します。$elemMatch

db.collectionName.update({"source":{"$elemMatch":{"bookid":ObjectId("552cd77e31456e192df6ad8e")}}},{"$set":{"source.$.isActive":false}})

複数のドキュメントの更新でこのmongo updateを使用した場合は、multi true を追加します。

于 2015-04-16T07:02:49.323 に答える