node+mongoose 批量处理数据用什么?
大神们,你们批量添加是用什么? foreach 去循环遍历吗? 这个多个人同时去进行添加会不会对性能/内存有很大的影响啊 除了foreach还有更优的方案吗?
据说全部都是用foreach哎
11 回复
forEach肯定不行,至少得用async。 不过现在还真没什么好用的,自己写了个不过用起来不方便。
mongodb 2.6是有bulk.insert()
方法的,不知道mongoose是否支持。
用异步?具体呢?
查了下,不是批量添加的方法
@heixiaoshan 你确信吗?或者说,你的批量添加是指什么?
根据Bulk.insert文档中的例子:
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();
这就是一次添加几条记录的操作。
@bnuhero 应该说场景不符吧。这种类似事物的处理。
记得某个版本以后的mongdb的insert方法支持数组了吧,mongoose不知道可不可以啊
Mongoose 4.x版本里会加上 Bulk, https://github.com/LearnBoost/mongoose/issues/2366
那么只好用消息队列了。。。
https://docs.mongodb.com/manual/core/bulk-write-operations/#bulkwrite-methods 采用bulkwrite进行写操作的散装