Mongodb是否有可能根据对其他集合中“doc”文档的查询更新文档? 我正在寻找使其成为原子操作的选项。
更具体地说,以下是两个集合的设计方式:
书籍(集合)
_id 名称 isReviewed [布尔]
评论(收藏)
_id bookID [书籍收藏中的_id] 评论
我想出了这个设计作为“评论”一本书的数组将继续增长并且是可变的。 现在,当有“Review”文档时,需要将“Book”文档中的isReviewed标志设置为“true”。为各自的书创建。只要书中至少存在一个相关的评论,该标志将保持“真实”。
当书籍没有评论时,相同的旗帜将设置为“false”。 (创建Book doc。时,标志的默认值为“false”) 删除评论时,会计算图书的评论计数,以查看是否可以将其设置为“false”。 (如果count为0,则设置为false)。
此系统专为多用户环境而设计,可共享书籍和评论等所有资源。所有用户都获得了所有资源的读/写权限。(我知道允许所有用户能够创建/读取/编辑/删除所有评论听起来很奇怪,但是,让我们说这是功能上的情况)。
现在,考虑到上述情况,我如何确保根据“评论”集合中的“计数”执行与设置“isReviewed”标志相关的更新?
这是一个无交易无法解决的案例(我的意思是,我需要RDBMS)吗?我也愿意重新设计我的收藏品。
感谢任何帮助,谢谢
答案 0 :(得分:0)
由于mongodb在文档级别提供AUTOMICITY,您可以预先加入您的书籍和评论集合,如下所示:
db.Books.insert(
{
"_id" : 1,
"Name": "ABC",
"reviews": [ ],
"count" : 0
}
P.S:MAX的文档大小应在16MB以内。 如果你期望你的“评论”将超过这个,你将不得不拆分 两个集合并在代码中处理大小写。