我需要更新我的mongoDB文档的子文档,该文档嵌套为数组数组,如下面json结构所示:
{
"_id": "53cf4e3dae92ac6561807f6d",
"results": {
"trips": [
{
"_id": 1,
"name": "A",
"address": [
{
"_id": 123,
"value": {
"allowed": true,
"optional": false
}
},
{
"_id": 456,
"value": {
"allowed": false,
"optional": false
}
}
]
},
{
"_id": 2,
"name": "B",
"address": [
{
"_id": 789,
"value": {
"allowed": true,
"optional": false
}
},
{
"_id": 567,
"value": {
"allowed": false,
"optional": false
}
}
]
}
]
}
}
现在,我想用new json元素“value”对象更新results.trips.address._id = 456。我可以考虑使用$ elemMatch更新查询,但可能是我没有正确使用,所以它不适合我。 另外,我将使用spring数据1.4.x在java中执行所有这些操作,而mongoDB版本是2.6。 任何帮助都将受到高度赞赏。
我正在使用的查询是:
db.collection.update({"_id" : ObjectId("53cf4e3dae92ac6561807f6d"), "results.trips.address":{$elemMatch : {"results.trips.address._id":456}}},{$set : {"results.trips.address.value":{"allowed": true, "optional": true}}});