在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
并重新启动
Meteor没有默认的批量插入功能,所以你的自动运行将触发每个插入操作
这是一个允许批量加载的包- mikowals:批插入
如果您对每个用户的所有内容始终发布到数据库不感兴趣,您可以从您的项目meteor remove autopublish
中删除自动发布包,如果您还没有。这样,您就可以在插入所有行之前限制流星魔法的发生。插入完成后,可以在整个集合上使用meteor.publish
将其"推送"给所有用户。
不完全确定这是否是你所想的,希望它能有所帮助
您应该能够将一个文档数组传递给单个collection.insert()调用
Mongo还提供了一些批量插入操作。请看这里http://docs.mongodb.org/manual/core/bulk-write-operations/
不确定流星是否支持。