0
最近、MongoDB + Spring Dataの作業を開始し、MongoDBとの単純な関係に固執しました。私は解決策を探すのに数時間を費やしましたが、それを得ることができませんでしたので、先に進み、SOに関する新しい質問をしてください。春データDBRef MongoDBアップデート
UserとBookの2つのエンティティがあります。ここでの関係は、多くの本を持つことができ、などのJavaで定義されている私は、ユーザーのコレクションのみ書籍IDと全体ではなく、文書を保存しなければならないような方法でCRUD操作を実行しています
public class User {
@Id
Private String id;
Private String userName;
@DBRef
private List<Book> books;
//getters + setter
}
public class Book {
@Id
private String id;
private String bookName;
//getters + setter
}
です。私はドキュメントを挿入するとき、それは正しく、ユーザーのrefrence objectIdとして本を格納しますが、私はそれを更新すると、ドキュメント全体をユーザーコレクションに格納します。 ここにコードがあります。
public void save {
Person person = new Person();
Book book = new Book();
List<Book> bookList = new ArrayList<Book>();
book.setName("Book Name");
mongoOperation.save(book);
bookList.add(book);
person.setUserName("[email protected]");
person.setBook(bookList);
mongoOperation.save(person);
}
private Person update(){
Person person = new Person();
Book book = new Book();
List<Book> bookList = new ArrayList<Book>();
book.setName("Book Name");
book.setCreatedBy("Abc Carter");
mongoOperation.save(book);
bookList.add(book);
person.setUserName("[email protected]");
//person.setBook(bookList);
mongoOperation.save(person);
Query searchQuery = new Query(Criteria.where("userName").is("[email protected]"));
mongoOperation.updateFirst(searchQuery, Update.update("book", bookList), Person.class);
return person;
}
私はMongoDB Compassを使用してデータを表示しています。挿入時に、スクリーンショットを添付して