似乎我不能在Meteor中进行多次插入,就像在Mongodb文档中described here一样......
在我的js控制台中:
> Test.insert([{name:'hello'},{name:'hello again'}])
返回
"g3pq8GvWoJiWMcPkC"
当我走了
Test.find().fetch()
我得到以下内容:
Object
0: Object
name: "hello"
__proto__: Object
1: Object
name: "hello again"
__proto__: Object
_id: "g3pq8GvWoJiWMcPkC"
__proto__: Object
似乎Meteor创建了一个超级文档,其中包含我试图作为单独插入的两个文档。
有人能告诉我这里的错误吗?
答案 0 :(得分:24)
来自Meteor排行榜example code,看起来您无法批量插入。您可以使用循环或下划线迭代函数。
使用下划线,
var names = [{name:'hello'},{name:'hello again'}]
_.each(names, function(doc) {
Test.insert(doc);
})
答案 1 :(得分:6)
您应该始终使用bulk insert来完成这些事情。 Meteor并不支持开箱即用。 您可以使用batch insert plugin或访问Mongodb节点驱动程序来本机执行此操作:
var items = [{name:'hello'},{name:'hello again'}],
testCollection = new Mongo.Collection("Test"),
bulk = testCollection.rawCollection().initializeUnorderedBulkOp();
for (var i = 0, len = items.length; i < len; i++) {
bulk.insert( items[i] );
}
bulk.execute();
请注意,这仅适用于mongoDB 2.6 +
答案 2 :(得分:1)
要在您的收藏中插入多个记录,您可以使用mikowals:batch-insert插件。
一个简单的例子:
var names = [{name:'hello'},{name:'hello again'}];
yourCollection.batchInsert(names);
您在这里只使用一个连接,您可以一次插入所有数据,与mongo批量插入操作相同。
答案 3 :(得分:1)
从2018年11月开始,您可以仅使用rawCollection访问Mongo Driver返回的集合,然后按照Mongo documentation插入一系列文档。
示例:
let History = new Mongo.Collection('History');
History.rawCollection().insert([entry1, entry2, entry3]);