Search code examples
pythonmongodbpymongodatabase

How do I update a Mongo document after inserting it?


Let's say I insert the document.

post = { some dictionary }
mongo_id = mycollection.insert(post)

Now, let's say I want to add a field and update it. How do I do that? This doesn't seem to work.....

post = mycollection.find_one({"_id":mongo_id}) 
post['newfield'] = "abc"
mycollection.save(post)

Solution

  • In pymongo you can update with:

    mycollection.update({'_id':mongo_id}, {"$set": post}, upsert=False)
    

    Upsert parameter will insert instead of updating if the post is not found in the database.
    Documentation is available at mongodb site.

    UPDATE For version > 3 use update_one instead of update:

    mycollection.update_one({'_id':mongo_id}, {"$set": post}, upsert=False)