Identifier le dernier document du jeu de résultats MongoDB find ()

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 .... });