Spring DataとMongoDBの最初の実験は素晴らしかったです。今、私は次の構造(簡体字)持っている:SpringデータMongoDB:サブ文書へのアクセスと更新
public class Letter {
@Id
private String id;
private List<Section> sections;
}
public class Section {
private String id;
private String content;
}
ロードを全体レターオブジェクト/文書を保存する魔法のように動作します。 (私はSection.idフィールドに一意のIDを生成するためのObjectIdを使用しています。)のドキュメントとして
Letter letter1 = mongoTemplate.findById(id, Letter.class)
mongoTemplate.insert(letter2);
mongoTemplate.save(letter3);
は(200K)大、時には唯一のサブ部分がアプリケーションによって必要とされている:照会する可能性がありますサブ文書(セクション)、変更して保存?私は、変更、文書全体をロードする、つまり、最後の三つの方法がやや「奇妙」であることがわかり
addLetterSection(letterId, s); // add after last section
insertLetterSection(letterId, sectionId, s); // insert before given section
deleteLetterSection(letterId, sectionId); // delete given section
:私は
Section s = findLetterSection(letterId, sectionId);
s.setText("blubb");
replaceLetterSection(letterId, sectionId, s);
など、もちろん法のような方法を実装したいと思います それを収集して保存することは、オブジェクト指向の観点からはより良いアプローチかもしれません。最初のユースケース(サブドキュメント/サブオブジェクトを「ナビゲート」してこのオブジェクトの範囲内で作業する)は当然のようです。
MongoDBはサブドキュメントを更新できますが、SpringDataをオブジェクトマッピングに使用できると思いますか?任意のポインターをありがとう。
findSectionById()メソッドを共有できますか? –
私はそれを共有して喜んで、それは簡単ですが、それは手紙のセクションをループし、IDフィールドを比較します。現時点では正確なコードはありません。 –