You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoengine中实现Mongo Shell的$nin正则匹配问题求助

解决Mongoengine中$nin正则查询不生效的问题

嘿,我懂你遇到的困扰啦!你在Mongo Shell里写的{name:{$nin:[/ja/,/ra/]}}是用正则表达式对象来做匹配的,但你在Mongoengine里传的['/ja/','/ra/']是普通字符串,Mongoengine会把它们当成字面量去匹配,自然达不到你想要的过滤效果。

正确的实现方式

在Mongoengine中,你需要使用Python标准库re模块编译的正则表达式对象,来替代字符串形式的正则。具体代码如下:

import re
# 替换成你实际的模型导入路径
from your_app.models import NameRecord

# 用re.compile生成正则对象,r前缀避免转义字符干扰
namelist = NameRecord.objects(name__nin=[re.compile(r'ja'), re.compile(r'ra')])

补充说明

  • 如果需要大小写不敏感的匹配,可以给re.compile添加flags参数,比如:
    namelist = NameRecord.objects(name__nin=[
        re.compile(r'ja', re.IGNORECASE),
        re.compile(r'ra', re.IGNORECASE)
    ])
    
  • 这样写之后,Mongoengine会自动把Python的正则对象转换成MongoDB能识别的正则查询语法,和你在Mongo Shell里的效果完全一致。

内容的提问来源于stack exchange,提问作者Mahesh G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 18:52:50