Meteor如何有效地从集合中发布文档?

时间:2015-04-17 17:41:24

标签: mongodb meteor mongodb-query

Collection中的文档包含一个名为userId的字段,用于存储创建文档的用户的_id。用户可以创建许多文档。

此文档的_id存储在用户个人资料中的数组中,其中包含他们创建的所有文档_id

由于所有文档_id字段都已编入索引,因此在以下两个游标之间查找和发布的速度是否存在巨大差异?我问,因为该集合将收集数以千计的文件。

Collection.find({_id: {$in: {arrayOf_ids}}})

Collection.find({'userId': this.userId})

1 个答案:

答案 0 :(得分:2)

让我们回过头来...... 如果1个用户拥有多个文档,并且每个文档有1个用户,为什么要将其存储在2个位置?你将对DB和DB的写入加倍。打开你自己的不一致。只需将userId存储在文档上,将该字段编入索引即可。完成它。

回答你的问题: 第一个不会真正使用索引,因为你实际上是在传入一个mongo必须遍历的数组,以查看其中一个值是否与id匹配。 如果您的_id为3,则大致相当于:

array = [1,2,3]
array.indexOf(3);

您可以通过致电.explain()来验证该内容,并查看其触摸的文档数量,使用的索引,以及需要的时间。

值得庆幸的是,在你达到成千上万之前,这一切都不重要,但提前做好工作计划!