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

tun
collection.remove(obj['_id'])

aber wenn ich versuche, diese erhalte ich die Meldung

TypeError: 'ObjectId' object is unsubscriptable.

Was ist los?

War es hilfreich?

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})
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top