MongoDB $ set & $オペレータに問題があります。私は既存のアレイに変更しようとMongoDB Bulk.find.update()は配列オブジェクトを変更しないで、新しいオブジェクトを追加するだけです
私の更新方法は、(それはClojureの/屋で書かれているように私には正確なコピーを取得することはできません)このよう程度になります。
bulk.find({
_id: 2,
channelStatuses.channel: {$eq: "BAR"}
}).update({
$set: {"channelStatuses.$.status": "error" }
});
私のデータは次のようになります。
{
"_id" : "1",
"channelStatuses" : [
{
"channel" : "FOO",
"status" : "done"
}
]
},
{
"_id" : "2",
"channelStatuses" : [
{
"channel" : "BAR",
"status" : "done"
}
]
},
{
"_id" : "3",
"channelStatuses" : [
{
"channel" : "BAZ",
"status" : "error"
}
]
},
{
"_id" : "3",
"channelStatuses" : []
}
それでは、私はそれがやりたいこと= 2
_idで文書のchannelStatusesオブジェクトの状態を変更することである代わりに、それはchann内に新しいオブジェクトを作成しますelStatuses配列であり、ドキュメントは次のようになります。
{
"_id" : "2",
"channelStatuses" : [
{
"channel" : "BAR",
"status" : "done"
},
{
"channel" : "BAR",
"status" : ""
}
]
},