如何只需一次调用就可以将对象数组保存到mongoose DB中



是否有任何方法可以通过一个调用将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) 

//简单的承诺

最新更新