Определить последний документ из набора результатов MongoDB find () - PullRequest
17 голосов
/ 26 апреля 2011

Я пытаюсь «передать» данные из экземпляра node.js / MongoDB клиенту с помощью веб-сокетов. Все работает хорошо.

Но как мне определить последний документ в результате? Я использую 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);
  });                
});

Ответы [ 3 ]

29 голосов
/ 26 апреля 2011

Поскольку mongodb objectId содержит дату создания, вы можете отсортировать по id, по убыванию и затем использовать limit (1):

db.collection.find().sort( { _id : -1 } ).limit(1);

Примечание.Команда оболочки, и я полагаю, вы можете легко переписать его в node.js.

1 голос
/ 22 января 2014

Скажите, у меня есть коллекция компаний. Ниже приведен фрагмент последнего документа в коллекции.

db.companies.find ({}, { "_ идентификатор": 1}). Пропустить (. Db.companies.find () рассчитывать () - 1);

Код не может полагаться на _id, так как он может не всегда находиться в определенном шаблоне, если это определенное пользователем значение.

0 голосов
/ 28 ноября 2016

Используйте сортировку и ограничение, если вы хотите использовать курсор:

var last = null;
var findCursor = collection.find({}).cursor();
findCursor.on("data", function(data) {
   last = data;
   ...
});
findCursor.on("end", function(data) {
   // last result in last
   ....
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...