0
我正在尋找正確的方法來實現upsert操作使用Spring Data提供的API的Mongo Collection。Spring Data Mongo:upsert各個領域更新
具體來說,我有以下用例。收集collection
的架構是類似如下:在第一插入期間,所述第二與後續:
{
_id: "some_id",
field1: "value1",
field2: "value2",
subdocument1: {
// A subdocument with some fields
},
subdocument2: {
// A subdocument with some other fields
}
}
字段field1
和field2
總是存在的,但subdocument1
和subdocument2
將在不同的時刻被插入更新。
我看到MongoTemplate
有和upsert方法。使用這種方法,我必須建立我自己的更新操作。
Query query = Query.query(Criteria.where("_id").is("some_id"));
Update.update("_id", "some_id")
.set("field1", "value1")
.set("field2", "value2)
.set("subdocument1", subdocumentObject);
mongoTemplate.upsert(query, update, Collection.class);
我不明白,如果這是我正在尋找的,是否有更好的方法。
感謝。
感謝'setOnInsert'方法,我很懷念它。我將用它作爲'field1','field2'。不幸的是,我不知道如果'subdocument1'或'subdocument2'會先到達。 –
您不必爲'field1'和'field2'使用'setOnInsert',因爲它們總是存在。你應該繼續對這些字段使用'set'。你可以寫一個條件語句,如'if(「somecriteria」)update.set(「subdocument2」...) } else update.setOnInsert(「subdocument1」...)' – Veeram
我不明白爲什麼你正在爲'subdocument1'和'subdocument2'提出一種不同的方法。你能辯論這個事實嗎? –