I want to add a record to the collection if the key doesn't already exist. I understand [MongoDB][1] offers the upsertfor this so I did a
db.collection.update({"_id":"key1"},{"_id":"key1"},True) This seems to work.
However in the Pymongo documentation it says that update is deprecated and use to update_one().
But:
db.collection.update_one({"_id":"key1"},{"_id":"key1"},True) Gives:
raise ValueError('update only works with $ operators') ValueError: update only works with $ operators I don't really understand why update_one is different and why I need to use a $ operator. Can anyone help?
This is because you didn't specify any update operator. For example to $set the id value use:
db.collection.update_one({"_id":"key1"}, {"$set": {"id":"key1"}}, upsert=True) Note that in the Mongo shell, this will simply replace the document with the new document.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With