使用spring数据mongodb更新/替换mongodb中深层嵌套的对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用spring数据mongodb更新/替换mongodb中深层嵌套的对象相关的知识,希望对你有一定的参考价值。
我有这样的文件。
{
"id": "5a212b985735dd44089e4782",
"people": [{
"personId": "5a212b985735dd44089e4783",
"name": "Ronaldo",
"parents": [{
"parentId": "5a212b985735dd44089e4784",
"name": "Messi",
"address": [{
"addressId": "5a212b985735dd44089e4785",
"country": "Argentina",
"city": "Blah Blah"
},
{
"addressId": "5a212b985735dd44089e4786",
"country": "USA",
"city": "New York"
}
]
}]
}]
}
我必须使用新的父对象替换parents数组中的现有父对象。
我写的代码是:
Query query = new Query(Criteria.where("id").is("5a212b985735dd44089e4782"));
Update update = new Update().push("people.$.parents", parent);
this.mongoTemplate.findAndModify(query, update, PeopleInfo.class);
但是,它不是替换现有的父对象,而是创建一个新对象。
有谁知道如何执行这种查询?
请阅读push
here的文档。在这种情况下你应该做的是set
而不是push
Query query = new Query(Criteria.where("id").is("5a212b985735dd44089e4782"));
Update update = new Update().set("people.parents", parent);
this.mongoTemplate.findAndModify(query, update, PeopleInfo.class);
以上是关于使用spring数据mongodb更新/替换mongodb中深层嵌套的对象的主要内容,如果未能解决你的问题,请参考以下文章
在实时 mongodb 机器上更新(或替换)整个数据库集合的最佳方法是啥?
spring mongodb updatemulti为啥只更新了一条