mongodb - MongoEngine 从 ListField 中删除字符串

标签 mongodb flask mongoengine 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()

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

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

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

中删除字符串

最佳答案

如果你想从列表中删除一个元素,你需要使用 pull 修饰符,它采用单个值而不是列表,因为你这样做正确的查询是:

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

您还可以使用 pull_all 修饰符从“following”列表中删除多个元素;在本例中,您传递了一个值列表。

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

关于mongodb - MongoEngine 从 ListField 中删除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34402579/

相关文章:

python-3.x - 无法启动 lig​​httpd 服务守护进程

javascript - 预填充 WTForms 字段的当前值以对其进行编辑

python - PyMongo vs MongoEngine for Django

java - 如何考虑夏令时在 mongoDB 中存储 future 的调度日期

mongodb - 使用 SSL 的 mongodump 和 mongorestore

json - : cannot use the part to traverse the element更新时Mongo报错

python - Bokeh 服务器和 flask : get access to a bokeh attribute after submit

python - 在mongoDB(mongoengine)中按键获取列表中的字典

python - 文档中的 Mongoengine creation_time 属性

mongodb - mongodb $filter 操作是否适用于嵌套数组?