nodejs mangouste mise à jour en bloc
J'ai une collection de données, et je dois ajouter, pour tous les documents d'un nouveau champ. Si je lance une requête pour obtenir tous les documents et la mise à jour tous seul node.js est arrêté, peut-être pour une fuite de mémoire
C'est mon code
var express = require('express');
var geocoderProvider = 'google';
var httpAdapter = 'http';
var People = require("./models/people").collection.initializeOrderedBulkOp();
var app = express();
var geocoder = require('node-geocoder').getGeocoder(geocoderProvider, httpAdapter, {});
app.get('/', function (req, res) {
People.find({}, function (err, docs) {
if (err) {
res.send(err);
}else{
docs.forEach( function (doc){
geocoder.geocode({address: doc.address, country: 'Italy', zipcode: doc.cap}, function(error, value) {
doc.loc.coordinates[0]=value[0].latitude;
doc.loc.coordinates[1]=value[0].longitude;
People.update({ _id: doc._id }, { $set: { loc: doc.loc }}, { multi: true }, function (error){
if(error){
console.error('ERROR!');
}
});
});
});
}
});
});
var server = app.listen(3000, function () {
var host = server.address().address
var port = server.address().port
console.log('Example app listening at http://%s:%s', host, port)
});
Il n'y a aucun moyen de mise à jour en bloc avec la mangouste?
Merci d'avance
vous devriez regarder à l'aide de flux de données - vous pouvez ensuite mettre en pause, faire un changement, d'enregistrer, puis de reprendre le stream - edit: mongo permet uniquement de modifications atomiques (c'est à dire une doc changement à la fois, si bien qu'aucun il n'y a pas de modification globale)
Il ne me semble pas comme node.js devrait "arrêter" alors que la mise à jour de vos documents. En ce qui concerne en vrac de la mise à jour avec la mangouste, MongoDB ne prend pas en charge le multi-document de transactions. Si vous souhaitez mettre en place quelque chose près, regarde stackoverflow.com/questions/12493576/...
Il ne me semble pas comme node.js devrait "arrêter" alors que la mise à jour de vos documents. En ce qui concerne en vrac de la mise à jour avec la mangouste, MongoDB ne prend pas en charge le multi-document de transactions. Si vous souhaitez mettre en place quelque chose près, regarde stackoverflow.com/questions/12493576/...
OriginalL'auteur Claudio Pomo | 2015-01-29
Vous devez vous connecter pour publier un commentaire.
Des informations plus détaillées sur la requête et la requête de mise à jour.
Requête de recherche avec le tableau.
La mise à jour a besoin d'un $
Requête est une recherche de l'id
OriginalL'auteur Mangesh Pimpalkar
Vous pouvez descendre au niveau de la collection et de faire une mise à jour en bloc. Cette action ne sera pas atomique certains de l'écrit peut échouer et les autres peuvent réussir - mais il vous permettra de faire ces écrit en un seul voyage aller-retour à votre base de données.
Il ressemble à ceci:
Découvrez les docs ici: http://docs.mongodb.org/manual/core/bulk-write-operations/
OriginalL'auteur jtmarmon