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?

¿Fue útil?

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})
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top