MongoEngine:运算符“__contains”不适用于非英文字母或单词

MongoEngine: Operator "__contains" does not work with non-english letters or words

当尝试使用 mongoengine.queryset.visitor 中的 Q(nickname__contains="") 时,mongoengine 将无法匹配非英文字符。

例如:

{

"nickname":"你好啊"

}

=> User.objects(Q(nickname__contains="你好")).first()

=> None

但是对于英文字母,这会起作用:

{

"nickname":"Hello"

}

=> User.objects(Q(nickname__contains="Hel")).first()

=> (User Object)

我似乎没有遇到这个问题,至少对于最近版本的 mongoengine(使用 0.16.3 测试过)。

请注意,您还可以使用 .objects 中的 __raw__ 参数来发出原始 pymongo 查询

见下文:

class TestUser(Document):
    nickname = StringField()

TestUser(nickname="你好啊").save()

TestUser.objects(nickname__contains="你好").first()  # prints <TestUser: TestUser object>

TestUser.objects(__raw__={"nickname" : {"$regex" : ".*你好.*"}}).first() # prints <TestUser: TestUser object>