Y a-t-il un moyen de sauvegarder un tableau d'objet JSON à un Mongodb avec seulement n appel? quelque chose comme:
schemeObject.save(array_of_json_object, callback);
J'utilise mongoosejs
Je ne pense pas que c'est possible avec Mongooosejs. Vous pouvez toutefois utiliser l'insert de lot de MongoDB, qui est soutenu de manière native.
Liens utiles:
http://www.mongodb.org/display/docs/inserting#inserting-bulkinserts
https://groups.google.com/forum/#!msg/mongoose-orm/ikpmvcd0kds/bzuycn_orckj
Il y a un moyen d'insertion de lots avec Mongoosejs. Je ne sais pas si c'est une nouvelle fonctionnalité car cette question a été posée/réponse, mais je pensais que si quelqu'un viendrait venir ici d'une recherche, ils devraient connaître la manière de le faire.
var array = [{ type: 'Jelly bean' }, { type: 'snickers' }];
Candy.create(array, function (err, jellybean, snickers) {
if (err) // ...
});
Voici les documents: http://mongoosejs.com/docs/api.html#model_model.create
Cela fonctionne aussi avec la mangouste
Laptop.insertMany(laptopData, function (err, laptop) {
if (err) {
console.log(err);
};
console.log(laptop);
});
Une autre solution que j'ai utilisée. Si vous utilisez la mangouste avec des promesses, vous pouvez le faire en utilisant Q .
Vous pouvez commencer à utiliser Q en tant que promesse par défaut pour la mangouste à l'aide du code ci-dessous:
const mongoose = require('mongoose');
mongoose.Promise = require('q').Promise;
Ensuite, vous pouvez enregistrer un tableau de documents comme ci-dessous. Disons que nous stockons un tableau de modèles utilisateur, que j'ai montré dans users
variable.
Q
.all(users.map(curr => curr.save()))
.then((results) => { //do something })
.catch((err) => { //handle error })
.save()
Retournera un q
promesses et utilisera le tableau map
fonction, nous créerons une matrice de promesse à l'aide du tableau Modèles utilisateur.
Que diriez-vous quelque chose comme ça? Je sais que ça boucle à travers l'ensemble de la matrice .. Ne me pose plus de questions sur le Big O pour cela. Probablement pas le meilleur moyen d'insérer mais fonctionne pour une seule version initiale de données.
var arr = // array of objects;
res = [];
arr.forEach(function (item) {
item.save(function (err) {
res.Push(err);
if (res.length === arr.length)
{
// Done
}
});
});