是否有任何方法可以通过一个调用将JSON对象的数组保存到mongodb?类似于:
schemeObject.save(array_of_json_object, callback);
我正在使用mongoosejs
有一种使用MongooseJS进行批量插入的方法。自从这个问题被问到/回答后,我不确定这是否是一个新功能,但我想如果有人从搜索中来到这里,他们应该知道怎么做。
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
我认为使用mongoosejs是不可能的。但是,您可以使用本机支持的mongodb的BATCH插入。
有用的链接:
http://www.mongodb.org/display/DOCS/Inserting#Inserting-隔板
https://groups.google.com/forum/#!msg/mongoose orm/IkPmvcd0kds/bZuYCN_orckJ
这也适用于猫鼬
Laptop.insertMany(laptopData, function (err, laptop) {
if (err) {
console.log(err);
};
console.log(laptop);
});
这样的东西怎么样?我知道它在整个数组中循环。。不要为此问我大O的事。。可能不是最好的插入方式,但只适用于某种类型的初始数据转储。
var arr = // array of objects;
res = [];
arr.forEach(function (item) {
item.save(function (err) {
res.push(err);
if (res.length === arr.length)
{
// Done
}
});
});
我使用的另一种解决方法。如果你使用承诺猫鼬,你可以使用Q.
您可以使用以下代码开始使用Q作为猫鼬的默认承诺:
const mongoose = require('mongoose');
mongoose.Promise = require('q').Promise;
然后,您可以保存一系列文档,如下所示。假设我们正在存储一组User模型,我在users
变量中显示了这些模型。
Q
.all(users.map(curr => curr.save()))
.then((results) => { //do something })
.catch((err) => { //handle error })
.save()
将返回一个q
promise,使用数组map
函数,我们将使用用户模型数组创建一个promise数组。
我得到了解决方案,而不是使用
new model_name({
your data
})
使用这个
model_name.create({your data}).then(res).catch(err)
//简单的承诺