好吧,我正在创建一个允许用户创建帖子并喜欢它们的网络。
询问stackoverflow我已经了解了如何构建我的数据库:
包含每个帖子的文档的集合。 包含每个文档的集合,在每个文档中都有对post的引用。
当我想得到关于帖子的所有喜欢时,我可以查询类似的集合,寻找对该帖子的引用。
直到这里我还好。但假设我在收藏中有数百万份文件,我想知道如何在不太长的时间内查询和搜索它们。
我被告知ensureIndex,在这种情况下,我必须确保包含对帖子的引用的字段的索引。
但是什么时候我必须创建这个索引?足以创建它一次(例如,当我设置我的数据库时)它将在mongodb中作为默认值,或者我是否必须在应用程序生命周期内执行此操作?谢谢
答案 0 :(得分:3)
但假设我在收藏中有数百万份文件,我想知道如何在不太长的时间内查询和搜索它们。
我认为你很可能想把这些喜欢作为一个例子?
你不能,而是使用优化来解决这个问题。数百万行的计数可能会有点慢。
典型的场景是SQL技术中的计数器,您可以使用它来修改父行的子行数。
同样适用于MongoDB。
您可以将重要数据汇总到顶部。
如果您需要实际查询喜欢的内容,以显示一些喜欢它的人,那么您可以限制这些喜欢。 Google+和其他网络倾向于将他们展示的相似数量限制为大约1,000个。
我被告知了EnsureIndex,
向数据库添加索引确实有助于实际搜索文档。
但是什么时候我必须创建这个索引?足以创造一次
是的,MongoDB将自行管理索引。你只需要确保一次。