MongoEngine从ListField删除字符串

Zio*_*ion 2 mongodb mongoengine flask flask-mongoengine

码:

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()
Run Code Online (Sandbox Code Playgroud)

所以如果我想从Users.following字段中删除某个字符串

Users.objects(username="some_user").update(pull__following=["some_string"]) 然后保存吗?

因为我已经尝试过了,但它不会从 following listField

sty*_*ane 5

如果要从列表中删除一个元素,则需要使用pull修饰符,该修饰符只使用一个值而不是列表,因此正确的查询是:

Users.objects(username='some_user').update(pull__following='some_string')
Run Code Online (Sandbox Code Playgroud)

您还可以使用pull_all修饰符从“以下”列表中删除多个元素;在这种情况下,您传入一个值列表。

Users.objects(username='some_user').update(pull_all__following=['one_string', 'another_string'])
Run Code Online (Sandbox Code Playgroud)