Wie erhalte ich die ID ein Objekt, nachdem es in PyMongo persistierenden?
Frage
Ich habe eine Frage PyMongo Neuling: Wenn collection
ein PyMongo Sammlung und ich benutze es mit einem Objekt speichern
obj = {'foo': 'bar'}
collection.insert(obj)
erzeugt dann automatisch ein MongoDB _id
Feld für obj
; einmal kann dies bestätigen Sie mit
print obj
, die so etwas wie
ergibt{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}
Meine Frage ist: Wie bekomme ich das _id
wieder aus so, dass ich es verwenden kann
Zum Beispiel, wenn ich zu löschen obj
aus der Datenbank will, würde ich denken, dass ich mag so etwas wie
collection.remove(obj['_id'])
aber wenn ich versuche, diese erhalte ich die Meldung
TypeError: 'ObjectId' object is unsubscriptable.
Was ist los?
Lösung
Insert Returns die _id des eingeführten Dokuments.
und entfernen wird auf _id basierend entfernen, versuchen Sie so etwas wie:
doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)
Andere Tipps
Sie müssen nur remove
ein dict passieren, so wie du insert
tat. Also, um ein Dokument zu entfernen, auf der Grundlage seines _id
Wert, so etwas wie:
collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
Sie können nur obj
passieren.
für ein Objekt aus dem Dokument zu entfernen Sie haben Zustand zu erwähnen Wie Sie „_ID“ für ein Dokument angeben können ........
_id = db.test.insert({"foo": "test"})
db.test.remove({"_id":_id})