mongodb 查询集保存不更新,仅插入

1 投票
1 回答
1016 浏览
提问于 2025-04-17 17:58

在我的Flask应用中:

class places(db.Document):
    meta = {
        'collection': 'places',
        'allow_inheritance': False,
    }
    name = db.StringField(max_length=200, required=True)
    loc= db.GeoPointField(required=True)

x = places(loc=[-87,101], name="test")
places.save(x)

不过,我只想在文档是新的情况下插入它,如果文档已经存在,我想更新那一行数据。

我不太确定怎么使用upsert或update。

我遇到了一个错误,提示我在更新之前需要先保存(我在Flask应用中使用的是mongoengine)。

1 个回答

0

我觉得你不能这样做。
但你可以试试下面的方法:

首先,尝试从数据库中获取对象。

place = places.objects(name="test").first()
if place:
    #update here
    place.loc = [88,102]
else:
    #create new here
    place = places(loc = [-87,101], name="test")
place.save()

撰写回答