Je fais un simple insert dans Mongo ...
db.notes.insert({ title: "title", details: "note details"})
Une fois le document note inséré, je dois obtenir immédiatement l'identifiant de l'objet. Le résultat renvoyé par l'insert contient des informations de base sur la connexion et les erreurs, mais pas d'informations sur les documents et les champs.
J'ai trouvé des informations sur l'utilisation de la fonction update () avec upsert = true. Je ne sais pas si c'est la bonne façon de faire, je ne l'ai pas encore essayée.
Un des avantages de MongoDB est que les identifiants sont générés côté client.
Cela signifie que vous n'avez même pas à demander au serveur quel était l'identifiant, car vous lui avez dit quoi sauvegarder. En utilisant pymongo, la valeur de retour d'un insert sera l'identifiant de l'objet. Vérifiez-le:
>>> import pymongo
>>> collection = pymongo.Connection()['test']['tyler']
>>> _id = collection.insert({"name": "tyler"})
>>> print _id
4f0b2f55096f7622f6000000
La réponse de Tyler ne fonctionne pas pour moi. Utiliser _id.inserted_id fonctionne
>>> import pymongo
>>> collection = pymongo.Connection()['test']['tyler']
>>> _id = collection.insert({"name": "tyler"})
>>> print(_id)
<pymongo.results.InsertOneResult object at 0x0A7EABCD>
>>> print(_id.inserted_id)
5acf02400000000968ba447f
mis à jour; supprimé précédent car il n'était pas correct
Il semble que vous puissiez également le faire avec db.notes.save(...)
, qui retourne le _id après avoir effectué l'insertion.
Voir pour plus d'infos: http://api.mongodb.org/python/current/api/pymongo/collection.html
Les nouvelles versions de PyMongo déprécient insert
et à la place insert_one
ou insert_many
devrait être utilisé. Ces fonctions renvoient un objet pymongo.results.InsertOneResult
ou pymongo.results.InsertManyResult
.
Avec ces objets, vous pouvez utiliser les propriétés .inserted_id
et .inserted_ids
respectivement pour obtenir les ID d'objet insérés.
Voir this link pour plus d’informations sur insert_one
et insert_many
et this link pour plus d’informations sur pymongo.results.InsertOneResult
.
Il vous suffit de l'affecter à une variable:
someVar = db.notes.insert({ title: "title", details: "note details"})