如何使用Blaze for mongo后端按日期查询?

时间:2015-10-07 21:53:30

标签: mongodb blaze

我正在使用github torrent作为数据源尝试使用mongodb后端的Blaze。

我已经设置了隧道并可以通过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需要在isoformat中使用datetime,所以作为字符串。

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()导致此查询:({'$match': {u'created_at': {'$gt': Timestamp('2015-10-06 00:00:00')}}},)但是与之匹配的文档的结果相同。

我做错了什么?

0 个答案:

没有答案