Come posso ottenere l'ID di un oggetto dopo che persiste in PyMongo?
Domanda
Ho una domanda newbie PyMongo: Se collection
è un PyMongo Raccolta e lo uso per salvare un oggetto con
obj = {'foo': 'bar'}
collection.insert(obj)
poi MongoDB genera automaticamente un campo _id
per obj
; una volta in grado di confermare questo con
print obj
che produce qualcosa come
{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}
La mia domanda è: Come faccio a ottenere che indietro _id
in modo tale che posso usarlo
Per esempio, se voglio obj
cancellazione dal database, penserei che vorrei fare qualcosa di simile
collection.remove(obj['_id'])
ma quando provo questo ricevo il messaggio
TypeError: 'ObjectId' object is unsubscriptable.
Che cosa sta succedendo?
Soluzione
Inserisci restituisce il _id del documento inserito.
e rimuovere rimuoverà sulla base di _id, in modo da provare qualcosa di simile:
doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)
Altri suggerimenti
Hai solo bisogno di passare remove
un dict, proprio come hai fatto insert
. Quindi, per rimuovere un documento basato sul suo valore _id
, fare qualcosa di simile:
collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
Si può solo passare obj
.
per la rimozione di un oggetto da un documento si deve parlare di condizione Come è possibile specificare "_ID" per un documento ........
_id = db.test.insert({"foo": "test"})
db.test.remove({"_id":_id})