【问题标题】:Mongoengine query listfield contains string matchesMongoengine 查询列表字段包含字符串匹配
【发布时间】:2018-02-26 15:16:11
【问题描述】:

我在包含string 值的模型中有一个ListField。如何查询包含给定stringstring 匹配项?我知道contains 运营商确实需要。但它与给定的字符串完全匹配。

例如:

[
    {_id: 1, "name": "name1", "tags": ["abc", "efg", "ijk"]},
    {_id: 2, "name": "name2", "tags": ["bcd", "fgh", "jkl"]}
]

型号:

class Users(Document):
    name = StringField()
    tags = ListField(StringField())

那么我的查询是这样的

users = Users.objects(tags__icontains='bc')

我希望它返回的两条记录都包含bc

注意:对于icontains,运算符在StringField 时按预期工作,但对于ListField,它只匹配User.objects(tags='bc')Refer

除此之外,mongo 查询中还有一个带有文本匹配的选项,MongoDB 查询支持正则表达式的 Perl 表示法。喜欢tags=/bc/。我们如何使用 mongoengine 来做到这一点。 Refer

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

    最后我用正则表达式匹配做到了。

    我已经更改了我的查询

    users = Users.objects(tags__icontains='bc')

    而不是

    import re
    
    users = Users.objects(tags=re.compile('.*bc.*', re.IGNORECASE))
    

    Refer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多