MongoDB/PyMongo:当尝试查询之后的所有日期时,BadValue 不受支持的投影选项

jjj*_*ayn 3 python twitter mongodb pymongo

我已经构建了一个 Twitter 抓取工具,可以将推文存储到 MongoDB 中。现在我正在尝试使用 PyMongo 查询数据。

存储在我的 MongoDB 中的数据:

{
    "_id": {
        "$oid": "5555dc0e50f808afe0da52fe"
    },
    "text": "Lorem Ipsum...",
    "created_at": {
        "$date": "2015-05-15T10:55:16.000Z"
    },
}
Run Code Online (Sandbox Code Playgroud)

以下工作非常好(但获取每一条推文):

dikt1 = {}
tweets_iterator = coll.find({},{ "text": 1, "user.screen_name":1 ,created_at': 1} )

for tweet in tweets_iterator:
        dikt1[tweet['text']] = tweet['created_at']
Run Code Online (Sandbox Code Playgroud)

但是,当尝试像这样查询某些日期之后的所有日期时:

date1 = datetime.utcnow()-timedelta(days=30)
dikt1 = {}
tweets_iterator = coll.find({},{ "text": 1, "user.screen_name":1 , 'created_at': {'$gt': date1}} )
for tweet in tweets_iterator:
        dikt1[tweet['text']] = tweet['created_at']
Run Code Online (Sandbox Code Playgroud)

最后一行“for tweets_iterator:”给出了一个错误:

OperationFailure:数据库错误:无法规范化查询:BadValue 不支持的投影选项:created_at:{$gt:new Date(1434480147418)}

有什么建议吗?

谢谢!

ale*_*cxe 6

如果要应用过滤器,请使用第一个位置参数find()

tweets_iterator = coll.find({'created_at': {'$gt': date1}}, {"text": 1, "user.screen_name": 1, 'created_at': 1})
Run Code Online (Sandbox Code Playgroud)