Как сделать запрос по дате, используя Blaze для mongo backend?

Я пробую Blaze с бэкэндом mongodb, используя github torrent в качестве источника данных.

Я настроил туннель и могу получить доступ к БД через туннель ssh

ssh -L 27017:dutihr.st.ewi.tudelft.nl:27017 ghtorrent@dutihr.st.ewi.tudelft.nl

from datetime import datetime
from blaze import Data

users = Data("mongodb://ghtorrentro:ghtorrentro@localhost/github::users")

# I can count the number of records in this collection
# following outputs: 5901048
users.count()

# looking at users.dshape, I see a key called 'created_at: datetime,'

Сейчас я пытаюсь выяснить, как сделать запрос на основе даты.

# I tried the following
docs = users[users['created_at'] > datetime(2015, 10, 6)]

# it gives me empty list
compute(docs)

# printing the blaze query gives:
print(compute(docs, post_compute=False)).query
({'$match': {u'created_at': {'$gt': datetime.datetime(2015, 10, 6, 0, 0)}}},)

Хотя я знаю, что запрос Pymongo показывает, что есть чуть более 5000 записей. Одно из отличий состоит в том, что pymongo требует datetime в формате isoformat, так как в виде строки.

pymongo_count = db.users.find({"created_at": {"$gt": datetime(2015, 10, 6).isoformat(), "$lt": datetime(2015, 10, 7).isoformat()}}).count()

Следующий блейз-запрос возвращает правильную запись:

compute(users[users["login"] == "sandhujasmine"])

Я также попытался использовать isoformat() для datetime, в результате этого запроса: ({'$match': {u'created_at': {'$gt': Timestamp('2015-10-06 00:00:00')}}},) но тот же пустой результат документов, которые соответствовали ему.

Что я делаю неправильно?

0 ответов

Другие вопросы по тегам