Comment puis-je obtenir l'ID d'un objet après persistant dans PyMongo?
Question
J'ai une question de débutant PyMongo: Si collection
est un PyMongo Collection et je l'utilise pour enregistrer un objet avec
obj = {'foo': 'bar'}
collection.insert(obj)
MongoDB puis génère automatiquement un champ _id
pour obj
; une fois peut confirmer avec
print obj
qui donne quelque chose comme
{'foo': 'bar', '_id': ObjectId('4c2fea1d289c7d837e000000')}
Ma question est: Comment puis-je obtenir ce retour de _id
de telle façon que je peux l'utiliser
Par exemple, si je veux supprimer obj
de la base de données, je pense que je voudrais faire quelque chose comme
collection.remove(obj['_id'])
mais quand j'essaie ce que je reçois le message
TypeError: 'ObjectId' object is unsubscriptable.
Qu'est-ce qui se passe?
La solution
insérer renvoie la _id du document inséré.
et supprimer supprimerons basé sur _id, alors essayez quelque chose comme:
doc_id = db.test.insert({"foo": 1})
db.test.remove(doc_id)
Autres conseils
Vous avez juste besoin de passer remove
un dict, comme vous l'avez fait insert
. Donc, pour supprimer un document en fonction de sa valeur _id
, faire quelque chose comme:
collection.remove({'_id': ObjectId('4c2fea1d289c7d837e000000')})
Vous pouvez juste passer obj
.
pour la suppression d'un objet de document que vous devez mentionner l'état Comme vous pouvez le spécifier "_id" pour un document ........
_id = db.test.insert({"foo": "test"})
db.test.remove({"_id":_id})