Я играл вокруг хранения твитов внутри mongodb, каждый объект выглядит так:
{
"_id" : ObjectId("4c02c58de500fe1be1000005"),
"contributors" : null,
"text" : "Hello world",
"user" : {
"following" : null,
"followers_count" : 5,
"utc_offset" : null,
"location" : "",
"profile_text_color" : "000000",
"friends_count" : 11,
"profile_link_color" : "0000ff",
"verified" : false,
"protected" : false,
"url" : null,
"contributors_enabled" : false,
"created_at" : "Sun May 30 18:47:06 +0000 2010",
"geo_enabled" : false,
"profile_sidebar_border_color" : "87bc44",
"statuses_count" : 13,
"favourites_count" : 0,
"description" : "",
"notifications" : null,
"profile_background_tile" : false,
"lang" : "en",
"id" : 149978111,
"time_zone" : null,
"profile_sidebar_fill_color" : "e0ff92"
},
"geo" : null,
"coordinates" : null,
"in_reply_to_user_id" : 149183152,
"place" : null,
"created_at" : "Sun May 30 20:07:35 +0000 2010",
"source" : "web",
"in_reply_to_status_id" : {
"floatApprox" : 15061797850
},
"truncated" : false,
"favorited" : false,
"id" : {
"floatApprox" : 15061838001
}
Как мне написать запрос, который проверяет созданный_кат и находит все объекты с 18:47 до 19:00? Нужно ли обновлять документы, чтобы даты сохранялись в определенном формате?
2010-04-29T00:00:00.000Z
намного проще, чем вычислять ту же дату / время в миллисекундах. Вы также можете легко конвертировать часовой пояс. Кроме того, Dates уже обрабатывает такие вещи, как високосные дни, високосные секунды и другие странности, с которыми вы обычно не хотите справляться сами.Ответы:
Запрос на диапазон дат (определенный месяц или день)вКулинарной книге MongoDBимеет очень хорошее объяснение по этому вопросу, но ниже я кое-что попробовал сам, и похоже, что он работает.Основываясь на моих экспериментах, вам нужно будет сериализовать ваши даты в формат, который поддерживает MongoDB, потому что следующее дало нежелательные результаты поиска.
Во втором примере никаких результатов не ожидалось, но был еще один. Это потому, что основное сравнение строк сделано.
источник
Чтобы уточнить. Важно знать, что:
Вот рабочий фрагмент кода, где мы делаем небольшую манипуляцию датами, чтобы гарантировать, что Mongo (здесь я использую модуль mongoose и хочу получить результаты для строк, чей атрибут date меньше (до) даты, указанной в параметре myDate), может обрабатывать это правильно:
источник
MongoDB на самом деле хранит миллис даты как int (64), как предписано http://bsonspec.org/#/specification
Однако это может привести к путанице при получении дат, поскольку драйвер клиента будет создавать экземпляр объекта даты со своим собственным часовым поясом. Драйвер JavaScript в консоли Монго, безусловно, сделает это.
Так что, если вы заботитесь о своих часовых поясах, убедитесь, что вы знаете, что это должно быть, когда вы получите его обратно. Это не должно иметь большого значения для запросов, так как оно все равно будет равняться тому же самому int (64), независимо от того, в каком часовом поясе находится ваш объект даты (я надеюсь). Но я бы определенно делал запросы с фактическими объектами даты (не строками) и позволял бы драйверу делать свое дело.
источник
Python и
pymongo
Поиск объектов между двумя датами в Python с помощью
pymongo
коллекцииposts
(на основе учебника ):Где
{"$gte": from_date, "$lt": to_date}
указывает диапазон в терминахdatetime.datetime
типов.источник
Замените
collection
на название коллекции, которую вы хотите выполнить запросисточник
Используйте этот код, чтобы найти запись между двумя датами, используя
$gte
и$lt
:источник
Использование с Moment.js и операторами сравнения запросов
источник
Конвертируйте ваши даты в часовой пояс GMT, когда вы вводите их в Mongo. Таким образом, никогда не бывает проблем с часовыми поясами. Тогда просто сделайте математику в поле твиттера / часового пояса, когда вы извлекаете данные обратно для представления.
источник
Почему бы не преобразовать строку в целое число вида ГГГГММДДЧЧММСС? Затем каждый прирост времени будет создавать большее целое число, и вы сможете фильтровать целые числа, не беспокоясь о преобразовании во время ISO.
источник
используйте $ gte и $ lte, чтобы найти данные о дате в mongodb
источник
Вы также можете проверить это. Если вы используете этот метод, используйте функцию parse для получения значений из базы данных Mongo:
источник
источник
Вы также можете проверить это или попробовать вместо использования агрегата
источник
я попытался в этой модели в соответствии с моими требованиями мне нужно сохранить дату, когда когда-либо объект создается позже, я хочу получить все записи (документы) между двумя датами в моем HTML-файле, я использовал следующий формат мм / дд / гггг
в моем файле py (python) я преобразовал его в "iso fomate" следующим образом
и сохранены в моей коллекции dbmongo с «SelectedDate» в качестве поля в моей коллекции
чтобы получить данные или документы между двумя датами, я использовал следующий запрос
источник