Я хочу узнать самую последнюю запись в коллекции. Как это сделать?
Примечание. Я знаю, что работают следующие запросы командной строки:
1. db.test.find().sort({"idate":-1}).limit(1).forEach(printjson);
2. db.test.find().skip(db.test.count()-1).forEach(printjson)
где idate добавляет отметку времени.
Проблема в том, что более длительная коллекция - это время для возврата данных, а моя «тестовая» коллекция действительно огромна. Мне нужен запрос с постоянным временем ответа.
Если есть лучший запрос командной строки mongodb, дайте мне знать.
mongodb
mongodb-query
инкрити
источник
источник
db.collection.find().limit(1).sort({$natural:-1}).pretty()
если ты хочешь, чтобы это выглядело красивоdb.collection.find().sort({$natural:-1}).limit(1).pretty()
Query failed with error code 303 and error message 'option $natural is not supported' on server docdb
. Надеюсь, эта функция скоро появится.Это даст вам последний документ на
collection
$natural:-1
означает порядок, противоположный тому, в который вставляются записи.Изменить : для всех опрошенных выше синтаксис Mongoose, синтаксис mongo CLI:
db.collectionName.find({}).sort({$natural:-1}).limit(1)
источник
По умолчанию индексы в MongoDB - это B-деревья. Поиск в B-дереве - это операция O (logN), поэтому даже
find({_id:...})
ответы с постоянным временем O (1) не будут.Тем не менее, вы также можете сортировать по,
_id
если вы используетеObjectId
для себя идентификаторы. Подробности смотрите здесь . Конечно, и это хорошо только до последней секунды.Вы можете прибегнуть к «написанию дважды». Один раз напишите в основную коллекцию и снова напишите в «последнюю обновленную» коллекцию. Без транзакций это не будет идеально, но с одним элементом в коллекции «последнее обновление» всегда будет быстро.
источник
Еще один способ получить последний элемент из коллекции MongoDB (не обращайте внимания на примеры):
Нормальная проекция
Сортированный прогноз (_id: обратный порядок)
sort({'_id':-1})
, определяет проекцию в порядке убывания всех документов на основе их_id
s.Сортированная проекция (_id: обратный порядок): получение последнего (последнего) документа из коллекции.
источник
php7.1 mongoDB:
$data = $collection->findOne([],['sort' => ['_id' => -1],'projection' => ['_id' => 1]]);
источник
Мое решение:
db.collection("name of collection").find({}, {limit: 1}).sort({$natural: -1})
источник
Вот как получить последнюю запись из всех документов MongoDB из коллекции "foo". (Изменить foo, x, y ... и т. Д.)
вы можете добавить или удалить из группы
справочные статьи: https://docs.mongodb.com/manual/reference/operator/aggregation/group/#pipe._S_group
https://docs.mongodb.com/manual/reference/operator/aggregation/last/
источник
Если вы используете автоматически сгенерированные идентификаторы объектов Mongo в своем документе, он содержит метку времени в качестве первых 4 байтов, с помощью которых можно узнать последний документ, вставленный в коллекцию. Я понимаю, что это старый вопрос, но если кто-то все еще здесь ищет еще одну альтернативу.
Вышеуказанный запрос даст _id для последнего документа, вставленного в коллекцию.
источник