How do I update a Mongo document after inserting it?

TIMEX picture TIMEX · Dec 7, 2010 · Viewed 105.9k times · Source

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)

Answer

allait picture allait · Dec 7, 2010

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)