1

私のフラスコアプリでは:

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の使い方がわかりません。

更新前に保存するように指示するエラーが発生しました(フラスコアプリでmongoengineを使用しています)。

4

1 に答える 1

0

私はあなたがそのようにこれをすることはできないと思います。しかし、あなたは次のものを試すことができます:

まず、dbからオブジェクトを取得してみてください

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()
于 2013-03-05T09:16:21.670 に答える