该文件是(我简化了结构):
{
"_id" : ObjectId("561f7896d3e4d2d8a6406baa"),
"array" : [
{
"array" : [
{
"taskId" : 1,
"finished" : false
}
]
}
]
}
我想将完成更新为真。
查询是
db.getCollection('JustTest').find({"array.array.taskId":1})
我尝试了db.getCollection('JustTest').update({"array.array.taskId":1},{$set:{"array.$.finished":true}})
。但结果是
{
"_id" : ObjectId("561f7896d3e4d2d8a6406baa"),
"array" : [
{
"array" : [
{
"taskId" : 1,
"finished" : false
}
],
"finished" : true
}
]
}
并且"array.$.array.$.finished":true
是非法的并返回错误信息。
我已阅读http://docs.mongodb.org/manual/reference/operator/update/positional/。我也发现了一个类似的问题How to update data in nested array in MongoDB,但答案可能很幼稚。
我不知道更新嵌套数组中的字段。修复位置不是一个好主意,因为可以推送或弹出数组(内部或外部)(从中间)。制作两个集合可以工作,但查询将是难。