2013-03-05 67 views
1

在我的烧瓶应用:MongoDB的查询集保存没有做更新,只能插入

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)。

回答

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() 
+0

可以请你对我做的如何#UPDATE这里阐述得对象。它是不是像places.update? – user1340513 2013-03-05 09:31:21

+0

如果我尝试使用places.objects(name =“test”),则在我的烧瓶应用程序中不返回任何内容,而在mongodb中,db.places.find({name:“test”})会返回结果。请帮忙@Elephant – user1340513 2013-03-05 09:35:51

+0

哦,那是我的错。我在我的答案中解决这个问题。 places.objects(name =“test”)。first()当然 – Elephant 2013-03-05 09:38:52