2013-07-15 4 views
9

Я подключение к моим mongodb с помощью pymongo:Как определить, существует ли поле?

client = MongoClient() 
mongo = MongoClient('localhost', 27017) 
mongo_db = mongo['test'] 
mongo_coll = mongo_db['test'] #Tweets database 

У меня есть курсор, и я пробегаем по каждой записи:

cursor = mongo_coll.find() 
for record in cursor: #for all the tweets in the database 
    try: 
     msgurl = record["entities"]["urls"] #look for URLs in the tweets 
    except: 
     continue 

Причина try/except потому, что если ["entities"]["urls"] не существует, он ошибается.

Как определить, существуют ли ["сущности"] ["urls"]?

+0

также, пожалуйста, исправьте мою терминологию «поле» –

ответ

7

Запись - это словарь, в котором ключевые «сущности» ссылаются на другой словарь, поэтому просто проверьте, есть ли в этом словаре «urls».

if "urls" in record["entities"]: 

Если вы просто хотите продолжить работу в любом случае, вы также можете использовать get.

msgurl = record["entities"].get("urls") 

Это приведет к тому, что msgurl будет равным None, если такого ключа нет.

+0

большое спасибо! как насчет проверки наличия записи ["сущностей"]? –

+0

Вы можете сделать то же самое: либо 'if" entity "в записи:' или 'record.get (" entities ")'. – llb

+0

Огромное спасибо. плохо согласитесь, как только я смогу (5 мин) –

6

Просто, чтобы добавить к @martingreber ответ, чтобы проверить, если поле существует, а значение не равно нулю.

mongo_coll.find({ 
$and:[ 
    {"entities.urls": {$exists:1}}, 
    {"entities.urls": {$not: {$type:10}}} 
]}) 
Смежные вопросы