When trying to use Q(nickname__contains="") from mongoengine.queryset.visitor, mongoengine will not match the non-english character.
For instance:
{
"nickname":"你好啊"
}
=> User.objects(Q(nickname__contains="你好")).first()
=> None
But with English letters, this will work:
{
"nickname":"Hello"
}
=> User.objects(Q(nickname__contains="Hel")).first()
=> (User Object)
I don't seem to have the issue, at least with recent version of mongoengine (tested with 0.16.3).
Note that you can also use the __raw__
parameter in .objects
to issue a raw pymongo query
See below:
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>