Reputation: 3511
I have a mongodb collection friends and I run the code
for doc in friends.find():
print doc
I get:
{u'_id': ObjectId('519ccdb86383cf1444445a1c'), u'twitter_id': 609034617}
{u'_id': ObjectId('519ccdb86383cf1444445a1d'), u'twitter_id': 253090547}
{u'_id': ObjectId('519ccdb86383cf1444445a1e'), u'twitter_id': 146221326}
{u'_id': ObjectId('519ccdb86383cf1444445a1f'), u'twitter_id': 1267350151}
{u'_id': ObjectId('519ccdb86383cf1444445a20'), u'twitter_id': 8806112}
{u'_id': ObjectId('519ccdb86383cf1444445a21'), u'twitter_id': 82589355}
but if I do:
for doc in friends.find():
print doc['twitter_id']
I get the error:
Traceback (most recent call last):
File "C:\Users\schatterjee\workspace\scorefollowback.py\application.py", line 65, in <module>
print doc['twitter_id']
KeyError: 'twitter_id'
Upvotes: 3
Views: 8978
Reputation: 30136
Perhaps some of your documents don't have a twitter id. Here is an example shell session with good data:
>>> import pymongo
>>> conn = pymongo.MongoClient('localhost', 27017)
>>> users = conn['test']['users']
>>> users.remove()
>>> users.insert({'twitter_id': '11111111'})
>>> users.insert({'twitter_id': '22222222'})
>>> for user in users.find():
... print(user['twitter_id'])
...
11111111
22222222
You might want to try using $exists
to make sure the field is present like this: Syntax: { field: { $exists: <boolean> } }
for friend in friends.find({ twitter_id: { $exists: true } }):
print(friend['twitter_id'])
Upvotes: 1