2013-07-15 6 views
9

Je me connecte à mon mongodb en utilisant pymongo:comment déterminer si un champ existe?

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

J'ai un curseur et je Boucler dans tous les records:

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 

La raison de la try/except est parce que si ["entities"]["urls"] n'existe pas, il y a des erreurs.

Comment puis-je déterminer si ["entities"] ["urls"] existe?

+0

aussi s'il vous plaît corriger ma terminologie de "domaine" –

Répondre

7

L'enregistrement est un dictionnaire dans lequel la clé "entités" est liée à un autre dictionnaire, il suffit donc de vérifier si "urls" se trouve dans ce dictionnaire.

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

Si vous voulez simplement continuer dans tous les cas, vous pouvez également utiliser get. Cela entraînera msgurl à être égal à None s'il n'y a pas de telle clé.

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

+0

merci beaucoup! Qu'en est-il de vérifier si record ["entities"] existe? –

+0

Vous pouvez faire la même chose: soit "si" entités "dans l'enregistrement:' ou 'record.get (" entités ")'. – llb

+0

génial merci beaucoup. Mal accepter dès que je suis capable (5 min) –

6

Juste pour ajouter à @martingreber réponse, pour vérifier si le champ existe et la valeur est nulle.

mongo_coll.find({ 
$and:[ 
    {"entities.urls": {$exists:1}}, 
    {"entities.urls": {$not: {$type:10}}} 
]}) 
Questions connexes