Mongoengine查询列表字段包含字符串匹配

时间:2018-02-05 11:24:55

标签: python mongodb mongoengine

我的模型中有ListField,其中包含string个值。如何查询包含给定string的{​​{1}}个匹配项?我知道string运营商需要这样做。但它完全匹配给定的字符串。

例如:

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,它只会匹配ListFieldthe regex demo

除此之外,mongo查询中还有一个带文本匹配的选项,MongoDB查询支持正则表达式的Perl表示法。像User.objects(tags='bc')一样。我们如何用mongoengine做到这一点。 Refer

1 个答案:

答案 0 :(得分:1)

最后我用正则表达式匹配完成了这个。

我用

更改了我的查询

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

而不是

import re

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

Refer