2013-07-15 25 views
9

Sto collegandomi al mio mongodb utilizzando pymongo:come determinare se esiste un campo?

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

Ho un cursore e sto scorrendo ogni record:

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 

Il motivo per il try/except perché se ["entities"]["urls"] non esiste, si sbaglia.

Come determinare se ["entità"] ["URL"] esiste?

+0

anche si prega di correggere la mia terminologia di "campo" –

risposta

7

Record è un dizionario in cui la chiave "entità" si collega ad un altro dizionario, quindi basta controllare se "urls" è in quel dizionario.

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

Se si desidera procedere in ogni caso, è possibile utilizzare anche get.

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

Questo farà sì che msgurl sia uguale a Nessuno se non c'è una tale chiave.

+0

grazie mille! che dire di verificare se esistono ["entità" di registrazione? –

+0

Puoi fare la stessa cosa: "se" entità "in registrazione:' o 'record.get (" entità ")'. – llb

+0

fantastico grazie mille. accetto non appena sarò in grado (5 min) –

6

solo per aggiungere al @martingreber risposta, per verificare se il campo esiste e il valore non è nullo.

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