Я знаю, что ObjectIds содержит дату, когда они были созданы. Есть ли способ запросить этот аспект ObjectId?
javascript
mongodb
Zach
источник
источник
Ответы:
Вставка меток времени в ObjectIds охватывает запросы, основанные на датах, встроенных в ObjectId, очень подробно.
Кратко в коде JavaScript:
источник
~/.mongorc.js
файле, чтобы она была доступна приmongo
запуске оболочки.ObjectId(hexSeconds + "0000000000000000");
наdb.ObjectID.createFromHexString(hexSeconds + "0000000000000000");
ObjectId()
на:require('mongoose').Types.ObjectId()
- гдеrequire('mongoose')
находится ваш инициализированный / настроенный экземпляр Mongoose.Использование встроенной функции, предоставляемой драйверами mongodb в Node.js, позволяет выполнять запросы по любой временной отметке:
Кроме того, чтобы искать записи до текущего времени, вы можете просто сделать:
Источник: http://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html
источник
В
pymongo
, это можно сделать так:источник
pymongo
зависимости:epoch_time_hex = format(int(time.time()), 'x')
(не забудьте добавить нули для вашего запроса) Был использован пакет времени (import time
).Поскольку первые 4 байта ObjectId представляют временную метку , для хронологического запроса вашей коллекции просто упорядочите по id:
После того, как вы получите документы, вы можете получить время генерации ObjectId следующим образом:
источник
как найти команду «Найти команду» (эта дата [2015-1-12] - эта дата [2015-1-15]):
Подсчитайте команду (эта дата [2015-1-12] до этой даты [2015-1-15]):
Удалить команду (эта дата [2015-1-12] до этой даты [2015-1-15]):
источник
Вы можете использовать
$convert
функцию для извлечения даты из ObjectId, начиная с версии 4.0.Что-то вроде
Вы можете запросить дату, сравнивая время начала и окончания даты.
ИЛИ
Вы можете использовать стенографию
$toDate
для достижения того же.источник
Чтобы получить последние 60 дней документы в коллекции монго, я использовал запрос ниже в оболочке.
источник
Если вы хотите сделать запрос диапазона, вы можете сделать это, как в этом посте . Например, запрос для определенного дня (т.е. 4 апреля 2015 г.):
источник
Из документации:
таким образом, у вас есть дата, которая является ISODate.
Посмотрите на http://www.mongodb.org/display/DOCS/Optimizing+Object+IDs#OptimizingObjectIDs-Extractinsertiontimesfromidratherthanhavingaseparatetimestampfield . Чтобы получить больше информации
источник
Используя MongoObjectID, вы также должны найти результаты, как указано ниже
источник
В рельсах
mongoid
вы можете запросить, используяисточник