2015-10-05 11 views
5

Mi sembra che stia lottando per trovare il modo corretto di eliminare un documento. Cioè dovrei usare remove() o delete_one() per esempio e anche qual è il metodo canonico di eliminazione per id, che è un string.Eliminazione del documento in PyMongo dall'ID

I.e. dovrei utilizzare il seguente:

mongo.db.xxx.delete_one({'_id': { "$oid" : str(_id) } }) 

oppure è possibile utilizzare un altro formato?

mongo.db.xxx.remove({'_id': { "$oid" : str(_id) } }) 
mongo.db.xxx.remove({'_id': ObjectId(_id) }) 

Qual è la forma canonica?

risposta

15

remove è deprecato nella versione 3.x di pymongo, così la forma canonica corrente potrebbe essere quella di utilizzare delete_one:

from bson.objectid import ObjectId 

result = mongo.db.xxx.delete_one({'_id': ObjectId(_id)}) 

La chiamata restituisce un DeleteResult in cui è possibile controllare il campo per vedere se deleted_count ha trovato un documento da eliminare

+0

Grazie, conosci le eccezioni di errore? Non riesco a ottenere il debug al momento. Cioè se l'ID non è stato trovato. – disruptive

+0

Quando provo questo alla riga di comando, ottengo il seguente: 'NameError: name 'ObjectId' non è definito' – disruptive

+0

@Navonod È necessario importarlo se non lo stai già facendo. Vedi risposta aggiornata. – JohnnyHK

Problemi correlati