EnsureIndex用于MongoDB中的喜欢

时间:2014-01-19 22:26:41

标签: javascript php node.js mongodb database

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

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

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

当我想得到关于帖子的所有喜欢时,我可以查询类似的集合,寻找对该帖子的引用。

直到这里我还好。但假设我在收藏中有数百万份文件,我想知道如何在不太长的时间内查询和搜索它们。

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

但是什么时候我必须创建这个索引?足以创建它一次(例如,当我设置我的数据库时)它将在mongodb中作为默认值,或者我是否必须在应用程序生命周期内执行此操作?谢谢

1 个答案:

答案 0 :(得分:3)

  

但假设我在收藏中有数百万份文件,我想知道如何在不太长的时间内查询和搜索它们。

我认为你很可能想把这些喜欢作为一个例子?

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

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

同样适用于MongoDB。

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

如果您需要实际查询喜欢的内容,以显示一些喜欢它的人,那么您可以限制这些喜欢。 Google+和其他网络倾向于将他们展示的相似数量限制为大约1,000个。

  

我被告知了EnsureIndex,

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

  

但是什么时候我必须创建这个索引?足以创造一次

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