首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB:大容量插入(Bulk.insert) vs插入多个( insert ([...]))

问MongoDB:大容量插入(Bulk.insert) vs插入多个( insert ([...]))
EN

Stack Overflow用户
提问于 2016-01-31 17:17:01
回答 2查看 26.4K关注 0票数 31

bulk insert和inserting multiple documents有什么区别吗?

代码语言:javascript
复制
var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } );
bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } );
bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } );
bulk.execute();

VS

代码语言:javascript
复制
db.collection.insert(
   <document or array of documents>
)

有没有更快的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-31 17:28:08

@Dummy是正确的,批量操作通常比单个插入更快,然而,从2.6版和更高版本开始,使用collection.insert插入多个文档只是BulkWrite的语法糖。如果将ordered标志设置为false,则性能应与无序大容量插入相同:

代码语言:javascript
复制
db.collection.insert(<document array>,{ordered:false})

此操作将返回一个BulkWriteResult,请在documentation中查看更多详细信息。

票数 40
EN

Stack Overflow用户

发布于 2016-01-31 17:22:36

是的,是有区别的。对于批量操作(总是),您只需转到数据库一次,然后在批记录上执行操作,然后返回到应用程序。对于单独的插入,您将需要转到数据库,执行插入,然后返回到应用程序,您将对告诉数据库执行的每个单独的插入操作重复此过程。因此,与批量操作相比,单个插入非常慢。这就像买杂货一样,如果你把需要买的东西都列出来了,你可以一次买完(批量插入),但如果每一件东西,你需要开车到商店去取,然后开车回家,然后再开车回到商店去买另一件东西,那么效率就不是很高(比如单独插入)。

注意:尽管在使用shell与MongoDB进行交互时,您只需要为批量插入和单个插入处理一个insert函数,但是在使用insertOne()驱动程序API时,您应该区分insertMany()和MongoDB操作。并且您永远不应该在循环中调用insertOne() (原因:参见上面的杂货购物类比)。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35112165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档