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?

È stato utile?

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})
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top