MongoDB中喜欢的EnsureIndex

Posted

技术标签:

【中文标题】MongoDB中喜欢的EnsureIndex【英文标题】:EnsureIndex for likes in MongoDB 【发布时间】:2014-02-09 00:04:13 【问题描述】:

嗯,我正在创建一个允许用户创建帖子并喜欢它们的网络。

在***上询问我已经了解如何构建我的数据库:

包含每个帖子的文档的集合。 一个集合,其中包含每个like 的文档,在每个文档中都有一个引用,post 被引用。

当我想获得关于某个帖子的所有点赞时,我可以查询点赞集合以查找对该帖子的引用。

直到这里我还好。但是假设我将在类似的集合中拥有数百万个文档,我想知道如何在不太长的时间内查询和搜索它们。

我被告知了 ensureIndex,在这种情况下,我必须确保包含对帖子的引用的字段的索引。

但是我什么时候必须创建这个索引?创建一次就足够了(例如,当我设置我的数据库时)并且它将在 mongodb 中作为默认设置,还是我必须在应用程序生命周期中执行它?谢谢你

【问题讨论】:

【参考方案1】:

但假设我将在类似的集合中拥有数百万个文档,我想知道如何在不太长的时间内查询和搜索它们。

我假设您很可能希望以点赞数为例?

您不能,而是使用优化来解决这个问题。数百万行的计数可能会有点慢。

一个典型的场景是 SQL 技术中的计数器,您可以使用它来修改父行及其子行的总和。

同样适用于 MongoDB。

您会将重要数据汇总到顶部。

如果您需要实际查询喜欢以显示一些喜欢它的人,那么您可以限制这些喜欢。 Google+ 和其他网络倾向于将他们显示的点赞数量限制在 1,000 左右。

我被告知了 ensureIndex,

向数据库添加索引确实有助于实际搜索文档。

但是我什么时候必须创建这个索引?一次就够了

是的,MongoDB 将自行管理索引。您只需确保一次。

【讨论】:

以上是关于MongoDB中喜欢的EnsureIndex的主要内容,如果未能解决你的问题,请参考以下文章

喜欢按钮,在数据库上加减。 nodejs, mongodb, 猫鼬, jquery

如何在 MongoDB 中使用“不喜欢”运算符

哪种方法更喜欢在 MongoDB 中动态管理数据库请求?

自从学习了MongoDB高可用,慢慢的喜欢上了它,之前确实冷落了

通过浏览他/她的所有帖子 MongoDB 获取该用户收到的总喜欢数

在一个文档MongoDB中存储多个大数组