【问题标题】:MongoDB store count in document vs perform count queryMongoDB在文档中存储计数与执行计数查询
【发布时间】:2017-11-08 22:00:17
【问题描述】:

在决定将 cmets 存储在与其对应帖子不同的集合中后,您如何存储和返回每个帖子的 cmets 数量?

选项 1:在每次插入新评论文档时更新计数器(但 MongoDB 不支持事务);
选项 2:计算检索每个帖子时的 cmets 数。
选项3:???

案例是一组帖子的渲染,其中每个帖子都应显示 cmets 的数量。

【问题讨论】:

标签: mongodb


【解决方案1】:

您可以使用$lookup 聚合(RDBMS 中的 JOIN 类比)。

但实际上我没有看到在 NoSQL DB 中使用 RDB 模式的意义。您必须尽量避免 NoSQL 中的连接,因为它会影响性能并违背 NoSQL 的整体逻辑。

附: NoSQL 中的数据重复是可以接受的 (-;

【讨论】:

  • 存储和增加 cmets 数量的计数似乎是一个可行的选择,但是由于缺少事务,我不能保证增加计数器实际上会导致插入注释。使用简单计数器执行查找/计数似乎开销太大。因此进退两难……
  • 如果您需要事务,那为什么不使用 RDBMS(如 MySQL/MariaDB、PostgreSQL 等)?
  • 因为 NodeJS / MongoDB 对于我们的实时应用来说总体来说似乎是一个不错的选择。
  • NodeJS 也可以使用 MySQL (-; 总而言之,你不能拥有一切(性能、一致性等)。完美的数据库不存在,所以你必须接受一些权衡(选择DB 主要满足您的需求或结合几个 DB)。
  • 是的,有一些事情需要考虑,我会考虑的。谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
相关资源
最近更新 更多