2015-12-21 43 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