Mongoose v3.6+ 现在支持批量插入吗?我已经搜索了几分钟,但与此查询匹配的任何内容都是几年前的,答案是明确的不。
编辑:
为了将来引用,答案是使用 Model.create()
。 create()
接受一个数组作为其第一个参数,因此您可以将要插入的文档作为数组传递。
见 Model.create() documentation
最佳答案
Model.create()
如果您正在处理非常大的批量,那么插入是一种不好的方法。它会非常慢。在这种情况下,您应该使用 Model.collection.insert
,它的性能要好得多。根据 block 的大小,Model.create()
甚至会崩溃!尝试了一百万个文件,没有运气。使用 Model.collection.insert
只需几秒钟。
Model.collection.insert(docs, options, callback)
docs
是要插入的文档数组;options
是一个可选的配置对象 - 见 the docs callback(err, docs)
将在所有文档保存或发生错误后调用。成功时,docs 是持久化文档的数组。正如 Mongoose 的作者指出的 here ,此方法将绕过任何验证程序并直接访问 Mongo 驱动程序。这是您必须做出的权衡,因为您要处理大量数据,否则您根本无法将其插入数据库(请记住,我们在这里讨论的是数十万个文档)。
var Potato = mongoose.model('Potato', PotatoSchema);
var potatoBag = [/* a humongous amount of potato objects */];
Potato.collection.insert(potatoBag, onInsert);
function onInsert(err, docs) {
if (err) {
// TODO: handle error
} else {
console.info('%d potatoes were successfully stored.', docs.length);
}
}
2019-06-22 更新:虽然 insert()
仍然可以正常使用,但它已被弃用,取而代之的是 insertMany()
.参数完全相同,因此您可以将其用作直接替换,并且一切都应该正常工作(嗯,返回值有点不同,但您可能无论如何都不会使用它)。
关于node.js - Mongoose (mongodb)批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16726330/
相关文章:
node.js - 如何在 MongoDB 中按日期对集合进行排序?
javascript - Mongoose 子文档与嵌套模式
node.js - 如何使用 2d 地理索引在 Mongoose 模式中正确定义数组中的对象
node.js - 如何使用 Mongoose 生成 ObjectId?
javascript - mongoose vs mongodb(nodejs模块/扩展),哪个更好
mongodb - mongorestore 错误 : Don't know what to do