queries - Identificar el último documento del conjunto de resultados find() de MongoDB
query document mongodb (3)
Estoy intentando ''transmitir'' datos desde una instancia de node.js / MongoDB al cliente usando websockets. Todo está funcionando bien.
¿Pero cómo identifico el último documento en el resultado? Estoy usando node-mongodb-native para conectarme a MongoDB desde node.js.
Un ejemplo simplificado:
collection.find({}, {}, function(err, cursor) {
if (err) sys.puts(err.message);
cursor.each(function(err, doc) {
client.send(doc);
});
});
Dado que mongodb objectId contiene la fecha de creación, puede ordenar por id, descender y luego usar limit (1):
db.collection.find().sort( { _id : -1 } ).limit(1);
Nota: no estoy familiarizado con node.js, el comando anterior es el comando mongo shell y supongo que puede reescribirlo fácilmente en node.js.
Digamos que tengo colección de empresas. El siguiente fragmento de código me da el último documento de la colección.
db.companies.find ({}, {"_ id": 1}). skip (db.companies.find (). count () - 1);
El código no puede confiar en _id ya que puede no estar en un patrón específico siempre que sea un valor definido por el usuario.
Usa ordenar y limitar, si quieres usar el cursor:
var last = null;
var findCursor = collection.find({}).cursor();
findCursor.on("data", function(data) {
last = data;
...
});
findCursor.on("end", function(data) {
// last result in last
....
});