MongoDB/PyMongo: BadValue Unsupported projection option when trying to query all dates after
13,802
If you want to apply a filter, use the first positional argument to find()
:
tweets_iterator = coll.find({'created_at': {'$gt': date1}}, {"text": 1, "user.screen_name": 1, 'created_at': 1})
Author by
jjjayn
Updated on August 29, 2022Comments
-
jjjayn over 1 year
I've build a Twitter scraper that stores tweets into MongoDB. Now I'm trying to query the data with PyMongo.
Stored data in my MongoDB:
{ "_id": { "$oid": "5555dc0e50f808afe0da52fe" }, "text": "Lorem Ipsum...", "created_at": { "$date": "2015-05-15T10:55:16.000Z" }, }
Following works perfectly fine (but fetches every tweet ever tweeted):
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']
However when trying to query all dates after certain dates like this:
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']
The last line "for tweet in tweets_iterator:" gives an error:
OperationFailure: database error: Can't canonicalize query: BadValue Unsupported projection option: created_at: { $gt: new Date(1434480147418) }
Any advices?
Thanks!