我对 MongoDB $set & $-operators 有疑问。我尝试修改现有数组
我的更新方法看起来像这样(我无法获得准确的副本,因为它是用 Clojure/Monger 编写的):
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" : []
}
所以我想要它做的是用_id = 2修改文档的channelStatuses-object的状态。
相反,它在 channelStatuses 数组中创建了一个新对象,文档如下所示:
{
"_id" : "2",
"channelStatuses" : [
{
"channel" : "BAR",
"status" : "done"
},
{
"channel" : "BAR",
"status" : ""
}
]
},