これは、 books.reviewsサブコレクションを含むbookコレクションで構成される私のデータです。
books = [{
_id: ObjectId("5558f40ad498c653748cf045"),
title: "Widget XYZ",
isbn: 1234567890,
reviews: [
{
_id: ObjectId("5558f40ad498c653748cf046"),
userId: "01234",
rating: 5,
review: "Yay, this great!"
},
{
_id: ObjectId("5558f40ad498c653748cf047"),
userId: "56789",
rating: 3,
review: "Meh, this okay."
}
]
}]
Node.js (Mongoose を使用) では、次の条件で、ユーザーがフォームからレビューを送信し、レビューと本の isbn をサーバーに送信できるようにする必要があります。
- 特定の isbn を持つ本がまだ存在しない場合は、それを追加してから、レビューを追加します (明らかに、まだ存在していません)。
- 本が実在するなら…
- このユーザーのこの書籍のレビューが存在しない場合は、レビューを追加します。
- このユーザーのこの書籍のレビューが存在する場合は、更新します。
これは 4 つの個別のクエリで実行できますが、最適ではないことはわかっています。使用できるクエリの最小数はいくつですか (もちろん、それらのクエリは何ですか)?