在Meteor中插入数千个文档

时间:2015-07-10 13:49:55

标签: javascript node.js mongodb meteor

在Meteor中将数千行插入集合的最佳方法是什么?

当我在循环中插入时,我可以在页面上看到由Collection.find().count()引起的文档数量被动反应更新。在循环结束并插入所有文档之前,我不知道文档的数量。在MongoDB中插入大量数据时,有什么好的做法可以记住吗?

修改

当我使用

createFolders: function() {
  var folders = [];

  for   (var i = 0; i < 10000; i++) {
    folders.push({ name: i });
  }

  Folders.batchInsert(folders);
},

插入了文档,但服务器显示RangeError: Out of memory并重新启动。

3 个答案:

答案 0 :(得分:1)

Meteor没有默认功能来执行批量插入,因此您的自动运行将触发每个插入操作

这是一个启用批量加载的软件包 - mikowals:batch-insert

答案 1 :(得分:0)

如果您不想让每个用户始终将所有内容发布到数据库,您可以从项目meteor remove autopublish中删除自动发布包,如果您还没有。这样,您可以限制流星魔法发生,直到您插入所有行。完成插入后,您可以在整个集合中使用meteor.publish将其“推送”给所有用户。

不完全确定这是否是您的想法,希望它有所帮助

答案 2 :(得分:0)

您应该能够将一组文档传递给一个collection.insert()调用

Mongo还提供了一些批量插入操作。见here

不确定Meteor是否支持它们。