【发布时间】:2015-07-29 07:20:19
【问题描述】:
这是我的数据,由 books 集合和 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 个单独的查询来做到这一点,但我知道这不是最优的。我可以使用的最少查询数量是多少(当然,这些查询是什么)?
【问题讨论】:
-
您如何检查评论是否已存在?我可以在一个查询中想出一种方法来做到这一点,但它假设一个新的评论。
标签: node.js mongodb subdocument