如何保存一个对象数组只有一个调用mongoose数据库?
有没有办法将一个JSON对象的数组保存到一个只有一个调用的MongoDB? 就像是:
schemeObject.save(array_of_json_object, callback);
我正在使用mongoosejs
我不认为它可能与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;
然后你可以保存下面的文件数组。 比方说,我们正在存储用户模型的数组,我已经显示在users
variables。
Q .all(users.map(curr => curr.save())) .then((results) => { //do something }) .catch((err) => { //handle error })
.save()
将返回一个promise并使用数组map
函数,我们将使用用户模型数组创build一个promise数组。