如何更新MongoDB中嵌套在数组数组中的子文档

时间:2014-09-01 07:07:36

标签: mongodb mongodb-java spring-data-mongodb

我需要更新我的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}}});

0 个答案:

没有答案