Подтвердить что ты не робот

Определить последний документ из набора результатов поиска 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);
  });                
});
4b9b3361

Ответ 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
   ....
});