这是我的数据,由一个书籍集合和一个books.reviews子集合组成。
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 个单独的查询来做到这一点,但我知道这不是最优的。我可以使用的最少查询数量是多少(当然,这些查询是什么)?