根据对其他集合中文档的“计数”查询,Mongodb是否有可能更新文档? 我正在寻找使其成为原子操作的选项。根据查询取决于其他集合更新文档
具体而言,以下是如何在两个集合的设计:
书籍(集合)
_id 名称 isReviewed [布尔]
评论(集合)
_id bookID [_id in Books Collection] 评论
我想出了这个设计,因为一本书的“评论”数组将会持续增长并且是可变的。 现在,有一个要求将“Book”文档中的isReviewed标志设置为“真正”,当出现“Review”文档时。为各自的书创建。只要至少存在一本书的相关评论,标志就会保持“真实”。
当没有对图书的评论时,相同的标志将被设置为“假”。 (创建书籍文档时,标志的默认值为“假”) 删除评论时,会计算书籍的评论计数以查看它是否可以设置为“false”。 (如果count为0,则设置为false)。
该系统专为共享所有资源(例如书籍和评论)的多用户环境而设计。所有用户在所有资源上都有读/写权限(我知道让所有用户都能够创建/读取/编辑/删除所有评论听起来很奇怪,但是,让我们说功能是这样)。
现在,考虑到上述情况,我如何才能确保我执行与“评论”集合中的“计数”设置“isReviewed”标志相关的更新?
这是一个没有交易就无法解决的情况(我的意思是,我需要RDBMS)吗?我愿意重新设计我的收藏。
任何帮助表示赞赏,感谢您
我认为你唯一可行的选择(操作保持原子性)是将评审文档作为书籍的子文档嵌套。 – bardzusny
@bardzusny谢谢你的回应。在我提出有两个集合的设计之前,我考虑了这个选择。正如我在问题中提到的那样,我需要两个集合,因为“评论”将会持续增长并且是可变的。 – Vsoma