2015-12-21 55 views
2

代碼:MongoEngine從ListField去除串

class Users(db.Document, UserMixin): 
    first_name = db.StringField() 
    last_name = db.StringField() 
    username = db.StringField(unique=True) 
    password = db.StringField() 
    email = db.StringField() 
    following = db.ListField(db.StringField(), default=[]) 
    role = db.ListField(db.StringField(), default=["user"]) 
    confirmed = db.BooleanField(default=False) 
    confirmed_on = db.DateTimeField() 

,所以如果我想從Users.following

Users.objects(username="some_user").update(pull__following=["some_string"]) 刪除某個字符串,然後保存呢?

,因爲我已經嘗試這樣做,如果你想從你的列表中刪除一個元素,它不會從followinglistField

回答

2

刪除字符串中,你需要使用pull修改它只需一個值不是一個列表,你這樣做是正確的查詢是:

Users.objects(username='some_user').update(pull__following='some_string') 

您也可以從使用pull_all修飾你的「下面」名單中刪除一些元素;在這種情況下,你通過一個價值清單。

Users.objects(username='some_user').update(pull_all__following=['one_string', 'another_string']) 
+0

所以這就是爲什麼。 'pull'將只取一個值,而'pull_al'l取一個'list'或'tuple' – Zion