¿Cómo puedo obtener el ID de un objeto después de que persiste en PyMongo?
Pregunta
Tengo una pregunta novato PyMongo: Si collection
es un PyMongo Colección y lo uso para guardar un objeto con
obj = {'foo': 'bar'}
collection.insert(obj)
entonces MongoDB genera automáticamente un campo _id
para obj
; una vez puede confirmar esto con
print obj
que produce algo así como
{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}
Mi pregunta es: ¿Cómo consigo que volver _id
a cabo de tal manera que pueda usarlo
Por ejemplo, si quiero obj
borrado de la base de datos, yo creo que me gustaría hacer algo como
collection.remove(obj['_id'])
pero cuando trato de este recibo el mensaje
TypeError: 'ObjectId' object is unsubscriptable.
¿Qué está pasando?
Solución
inserto devuelve el _id del documento insertado.
y retire será quitar basado en _id, por lo que intentar algo como:
doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)
Otros consejos
Sólo tiene que pasar remove
un diccionario, igual que lo hizo insert
. Por lo tanto, para eliminar un documento basado en su valor _id
, hacer algo como:
collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
Sólo puede pasar obj
.
para eliminar un objeto del documento se tiene que mencionar la condición Como se puede especificar "_ID" para un documento ........
_id = db.test.insert({"foo": "test"})
db.test.remove({"_id":_id})