假设我有以下文档 struct .
[
{
"_id": 1,
"depots": [
{
"_id": 1,
"isFavourite": true
},
{
"_id": 2,
"isFavourite": false
},
{
"_id": 3,
"isFavourite": true
},
{
"_id": 4,
"isFavourite": false
}
]
}
]
我想写一个single update query,它用_id: 1
过滤文档,首先将每个isFavourite
值设置为false
,然后将第二个isFavourite
值(或任何指定的索引)设置为true
.
生成的文档应该是这样的.
[
{
"_id": 1,
"depots": [
{
"_id": 1,
"isFavourite": false
},
{
"_id": 2,
"isFavourite": true
},
{
"_id": 3,
"isFavourite": false
},
{
"_id": 4,
"isFavourite": false
}
]
}
]
我try 的内容:
db.collection.update({
_id: 1
},
[
{
"$set": {
"depots.isFavourite": false
}
},
{
"$set": {
"depots.2.isFavourite": true
}
}
])
然而奇怪的是,这不起作用.有关此查询的结果,请参见链接的操场.