How to do "insert if not exist else update" with mongoengine?

django, mongodb, mongoengine, python

Solution

Note that `get_or_create` is now scheduled to be deprecated, because with no transaction support in MongoDB it cannot ensure atomicity.

The preferred way is update with upsert:

Location.objects(user_id=user_id).update_one(set__point=point, upsert=True)

More on upserts on the MongoDB documentation.

Problem

I'm working with mongoengine in Django, this is my document defination: ``` class Location(mongoengine.Document): user_id = mongoengine.IntField(required=True) point = mongoengine.GeoPointField(required=True) ``` I want to do this: given a `user_id` and a `point`: if there is no document that have this `user_id`, create one with the `user_id` and `point` and save it; else update the document with `user_id` with `point`. Can I do this in one statement with mongoengine?

Original source

Related problems