J’essaie de “diffuser” les données d’une instance node.js / MongoDB vers le client à l’aide de websockets. Tout fonctionne bien.
Mais comment identifier le dernier document du résultat? J’utilise node-mongodb-native pour me connecter à MongoDB à partir de node.js.
Un exemple simplifié:
collection.find({}, {}, function(err, cursor) { if (err) sys.puts(err.message); cursor.each(function(err, doc) { client.send(doc); }); });
Depuis mongodb objectId contenant la date de création, vous pouvez sortinger par identifiant, par ordre décroissant, puis par limit (1):
db.collection.find().sort( { _id : -1 } ).limit(1);
Note: je ne connais pas du tout node.js, la commande ci-dessus est une commande shell mongo et je suppose que vous pouvez facilement la réécrire sur node.js.
Dites que j’ai collection de sociétés. L’extrait ci-dessous me donne le dernier document de la collection.
db.companies.find ({}, {“_ id”: 1}). skip (db.companies.find (). count () – 1);
Le code ne peut pas s’appuyer sur _id car il peut ne pas toujours s’agir d’un modèle spécifique s’il s’agit d’une valeur définie par l’utilisateur.
Utilisez sortinger et limiter, si vous voulez utiliser le curseur:
var last = null; var findCursor = collection.find({}).cursor(); findCursor.on("data", function(data) { last = data; ... }); findCursor.on("end", function(data) { // last result in last .... });