Есть ли способ сохранить массив объекта JSON для mongodb с помощью только one? что-то вроде:
schemeObject.save(array_of_json_object, callback);
Я использую mongoosejs
Есть ли способ сохранить массив объекта JSON для mongodb с помощью только one? что-то вроде:
schemeObject.save(array_of_json_object, callback);
Я использую mongoosejs
Я не думаю, что это возможно с mongooosejs. Тем не менее, вы можете использовать BATCH-вставку mongodb, которая поддерживается изначально.
Полезные ссылки:
http://www.mongodb.org/display/DOCS/Inserting#Inserting-Bulkinserts
https://groups.google.com/forum/#!msg/mongoose-orm/IkPmvcd0kds/bZuYCN_orckJ
Существует способ вставки вставки с помощью 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
Как насчет чего-то подобного? Я знаю, что он проходит через весь массив. Не спрашивайте меня о Big 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 с promises, вы можете сделать это, используя Q.
Вы можете начать использовать Q в качестве обещания по умолчанию для мангуста, используя приведенный ниже код:
const mongoose = require('mongoose');
mongoose.Promise = require('q').Promise;
Затем вы можете сохранить массив документов, как показано ниже. Скажем, мы храним массив моделей пользователей, которые я показал в переменной users
.
Q
.all(users.map(curr => curr.save()))
.then((results) => { //do something })
.catch((err) => { //handle error })
.save()
вернет обещание q
и используя функцию массива map
, мы создадим массив обещаний, используя массив моделей пользователей.
Это также работает с мангустом
Laptop.insertMany(laptopData, function (err, laptop) {
if (err) {
console.log(err);
};
console.log(laptop);
});