如何保存一个对象数组只有一个调用mongoose数据库?

有没有办法将一个JSON对象的数组保存到一个只有一个调用的MongoDB? 就像是:

schemeObject.save(array_of_json_object, callback); 

我正在使用mongoosejs

       

网上收集的解决方案 "如何保存一个对象数组只有一个调用mongoose数据库?"

我不认为它可能与mongooosejs。 但是,您可以使用本机支持的mongodb的BATCH插入。

有用的url:

http://www.mongodb.org/display/DOCS/Inserting#Inserting-Bulkinserts

https://groups.google.com/forum/#!msg/mongoose-orm/IkPmvcd0kds/bZuYCN_orckJ

有一种方法可以批量插入MongooseJS。 我不确定是否这个问题是一个新function,因为这个问题被问及/答案,但我想如果有人来search这里,他们应该知道如何做到这一点。

 var array = [{ type: 'jelly bean' }, { type: 'snickers' }]; Candy.create(array, function (err, jellybean, snickers) { if (err) // ... }); 

这里是文档: http : //mongoosejs.com/docs/api.html#model_Model.create

这样的事情呢? 我知道它通过整个arrays循环..不要问我关于这个大O ..可能不是最好的方式来插入,但仅适用于某种初始数据转储..

 var arr = // array of objects; res = []; arr.forEach(function (item) { item.save(function (err) { res.push(err); if (res.length === arr.length) { // Done } }); }); 

我用过的另一个解决方法。 如果你用承诺使用mongoose,你可以使用Q做到这一点。

你可以开始使用Q作为默认承诺mongoose使用下面的代码:

 const mongoose = require('mongoose'); mongoose.Promise = require('q').Promise; 

然后你可以保存下面的文件数组。 比方说,我们正在存储用户模型的数组,我已经显示在usersvariables。

 Q .all(users.map(curr => curr.save())) .then((results) => { //do something }) .catch((err) => { //handle error }) 

.save()将返回一个promise并使用数组map函数,我们将使用用户模型数组创build一个promise数组。