Javascript 根据查询(取决于其他集合)更新文档
Mongodb中是否有可能根据查询其他集合中的文档“计数”来更新文档? 我正在寻找使它成为原子操作的选项 更具体地说,以下是两个集合的设计方式: 书籍(收藏) _身份证 名称 isReviewed[布尔值] 评论(收集) _身份证 bookID[\u图书收藏中的id] 评论 我提出这个设计是因为一本书的“评论”数组将不断增长并且是可变的。 现在,当有“审阅”文档时,需要将“Book”文档中的isReviewed标志设置为“true”。为各自的书创建。只要一本书至少有一个相关的评论存在,该标志将保持“true” 当一本书没有评论时,相同的标志将设置为“false”。(创建账簿文档时,标志的默认值为“false”) 删除书评时,会计算一本书的书评数,以查看是否可以将其设置为“false”。(如果计数为0,则设置为false) 该系统设计用于共享所有资源(如书籍和评论)的多用户环境。所有用户都被授予对所有资源的读/写权限(我知道允许所有用户创建/读取/编辑/删除所有评论听起来很奇怪,但是,假设功能上是这样的) 现在,考虑到上述情况,我如何确保执行与基于“Reviews”集合中的“count”设置“isReviewed”标志相关的更新 这是一个没有事务就无法解决的问题吗(我的意思是,我需要RDBMS吗)?我也愿意重新设计我的收藏Javascript 根据查询(取决于其他集合)更新文档,javascript,mongodb,mongoose,mongodb-query,mongoose-plugins,Javascript,Mongodb,Mongoose,Mongodb Query,Mongoose Plugins,Mongodb中是否有可能根据查询其他集合中的文档“计数”来更新文档? 我正在寻找使它成为原子操作的选项 更具体地说,以下是两个集合的设计方式: 书籍(收藏) _身份证 名称 isReviewed[布尔值] 评论(收集) _身份证 bookID[\u图书收藏中的id] 评论 我提出这个设计是因为一本书的“评论”数组将不断增长并且是可变的。 现在,当有“审阅”文档时,需要将“Book”文档中的isReviewed标志设置为“true”。为各自的书创建。只要一本书至少有一个相关的评论存在,该标志将保
非常感谢您的帮助,谢谢您由于mongodb提供文档级的自动复制功能,您可以按如下方式预先加入您的图书和评论收藏:
db.Books.insert(
{
"_id" : 1,
"Name": "ABC",
"reviews": [ ],
"count" : 0
}
注意:您的文档最大大小应在16MB以内。
如果你期望你的“评论”不止这些,你将不得不分成两部分
在您的代码中收集并处理两个案例。我认为您唯一可行的选择(操作保持原子性)是将审阅文档嵌套为书籍的子文档。@bardzusny感谢您的回复。我考虑过这个选择,然后才提出这个设计,有两个系列。正如我在问题中提到的,我需要两个集合,因为“评论”将持续增长并且是可变的。谢谢您的回复。我知道,事实上,我的情况是“Reviews”数组将不断增长,并且应该能够对数组项执行CRUD操作。(正如我在问题中提到的)。当它是两个集合的情况时,您提到我需要在代码中处理。你能给我一个代码示例吗?如果这有助于我保持数据的一致性,我完全支持这样做。我感谢你的帮助