Простой поиск в mongodb с python - PullRequest
1 голос
/ 30 мая 2019

У меня есть очень маленький скрипт, который пытается найти некоторые документы в mongodb, где в определенном поле указана сегодняшняя дата.

Мне как нубу кажется, что у меня хорошая связь, но я не получаю результатов.

Хотите знать, связано ли это с моим форматированием даты?

Вот мой сценарий:

import pymongo
from datetime import date

thedate = date.today().isoformat()

client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["hotels"]
collection = db["grand_native_test"]

query = {"skaptdato": {"$gt": thedate} }

doit = collection.find(query)

print(query)
print(collection)

for x in doit:
    print(x)

И результат просто:

{'skaptdato': {'$gt': '2019-05-30'}}
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), u'hotels'), u'grand_native_test')

Я потратил около 4 часов на этот, действительно базовый сценарий - но я не могу понять, насколько я понимаю.

Кстати: работает mongodb 3.6.3, последний выпуск pymongo и python 2.7.15.

КСТАТИ-2: Форматирование полей db также включает минуты и секунды -> 2019-05-30 13: 54: 00.645Z ...

Я очень надеюсь, что у одного из вас, умных людей, есть подсказка для бедного нуба.

1 Ответ

1 голос

Я предполагаю, что проблема в типах данных.Например, поле БД содержит тип ISODate и сравнивается с типом string.Используйте следующий код для MongoDB:

{skaptdato: {'$gt': ISODate('2019-05-30')}}

Используйте следующий код для pymongo:

from datetime import datetime
...
your_date_string = '2019-05-30'
date_string_to_date = datetime.strptime(your_date_string, '%Y-%m-%d')
...
{'skaptdato': {'$gt': date_string_to_date}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...