2013-07-15 5 views
9

ich eine Verbindung zu meinem mongodbpymongo mit:Wie kann man feststellen, ob ein Feld existiert?

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

Ich habe einen Cursor und durch jeden Datensatz am Looping:

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 

Der Grund für die try/except ist, denn wenn ["entities"]["urls"] nicht vorhanden ist, es ist falsch.

Wie kann ich feststellen, ob ["entities"] ["urls"] existiert?

+0

auch bitte korrigieren Sie meine Terminologie von "Feld" –

Antwort

7

Record ist ein Wörterbuch, in dem der Schlüssel "entities" zu einem anderen Wörterbuch verlinkt, also überprüfen Sie einfach, ob "urls" in diesem Wörterbuch ist.

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

Wenn Sie nur auf jeden Fall fortfahren wollen, können Sie auch get verwenden.

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

Dies bewirkt, dass msgurl gleich None ist, wenn es keinen solchen Schlüssel gibt.

+0

Vielen Dank! Was ist mit der Überprüfung, ob der Datensatz ["Entities"] existiert? –

+0

Sie können das gleiche tun: entweder 'if" entities "in record:' oder 'record.get (" entities ")'. – llb

+0

super danke vielen Dank. Ich akzeptiere sobald ich kann (5 min) –

6

einfach hinzufügen Antwort auf @martingreber, zu überprüfen, ob das Feld vorhanden ist und der Wert nicht null ist.

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