Определить последний документ из набора результатов поиска MongoDB()
Я пытаюсь "передать" данные из экземпляра node.js/MongoDB клиенту с помощью websockets. Все работает хорошо.
Но как я могу определить последний документ в результате? Я использую node-mongodb-native для подключения к MongoDB от node.js.
Упрощенный пример:
collection.find({}, {}, function(err, cursor) {
if (err) sys.puts(err.message);
cursor.each(function(err, doc) {
client.send(doc);
});
});
Ответы
Ответ 1
Так как mongodb objectId contatins дата создания, вы можете сортировать по id, по убыванию, а затем использовать limit (1):
db.collection.find().sort( { _id : -1 } ).limit(1);
Примечание: я вообще не знаком с node.js, команда выше - команда mongo shell, и я полагаю, вы можете легко переписать ее на node.js.
Ответ 2
Скажем, у меня есть сбор компаний. Ниже фрагмента дается последний документ в коллекции.
db.companies.find({}, { "_ идентификатор": 1}). Пропустить (. Db.companies.find() рассчитывать() - 1);
Код не может полагаться на _id, так как он может быть не на определенном шаблоне всегда, если это определенное пользователем значение.
Ответ 3
Используйте сортировку и ограничение, если вы хотите использовать курсор:
var last = null;
var findCursor = collection.find({}).cursor();
findCursor.on("data", function(data) {
last = data;
...
});
findCursor.on("end", function(data) {
// last result in last
....
});