0

私はこの種のドキュメントを持っています。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" } ] }] }] }

私は新しい対象と両親配列の内側に出オブジェクトを交換する必要があります。

私が書いたコードは次のとおりです。

Query query = new Query(Criteria.where("id").is("5a212b985735dd44089e4782")); Update update = new Update().push("people.$.parents", parent); this.mongoTemplate.findAndModify(query, update, PeopleInfo.class);

しかし、代わりに既存のオブジェクトを置き換えるので、それは新しいものを作成しています。

誰もこの種のクエリを実行する方法を知っていますか?

+0

3.6でサポートされている複数位置演算子です。あなたは 'db.collection_name.update({_id:" 5a212b985735dd44089e4782 "}、{$ set:{" people。$ [p] .parents。$ [pp] ":parent}}、{arrayFilters:[{'p .name ': "Ronaldo"}、{"pp.name": "Messi"}}}) 'のようになります。詳細はこちら[こちら](https://stackoverflow.com/questions/23577123/updating-a-nested-array-with-mongodb) – Veeram

答えて

0

pushhereのドキュメントを参照してください。この場合に行うべきことは、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); 
関連する問題