MongoDB/PyMongo:尝试查询所有日期时不支持BadValue投影选项

2024-09-24 00:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经构建了一个Twitter scraper,将tweets存储到MongoDB中。现在我试着用PyMongo查询数据。

存储在我的MongoDB中的数据:

{
    "_id": {
        "$oid": "5555dc0e50f808afe0da52fe"
    },
    "text": "Lorem Ipsum...",
    "created_at": {
        "$date": "2015-05-15T10:55:16.000Z"
    },
}

以下操作非常好(但会获取所有发过的tweet):

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']

但是,当试图查询某些日期之后的所有日期时,例如:

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']

tweets迭代器中tweet的最后一行:“给出一个错误:

OperationFailure: database error: Can't canonicalize query: BadValue Unsupported projection option: created_at: { $gt: new Date(1434480147418) }

有什么建议吗?

谢谢!


Tags: 数据textnameformongodbfindscreentweets
1条回答
网友
1楼 · 发布于 2024-09-24 00:27:42

如果要应用筛选器,请将第一个位置参数用于find()

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

相关问题 更多 >