我想做一个PyMongo相当于vendor NOT IN ('Amazon', 'eBay', 'AliBaba')
。
我可以通过执行以下操作使其在MongoDB中工作:
'vendor': {'$not': {'$in': [/^Amazon/, /^eBay/, /^AliBaba/]}}
这有效。
在PyMongo中,无论我尝试什么,都没有结果。它不会引发任何错误,但也不会返回任何结果。
这是我尝试过的:
1)
import re
vendor = {'$not': {'$in': [re.compile('^Amazon'), re.compile('^eBay'), re.compile('^AliBaba')]}}
2)
import re
vendor = {'$not': {'$in': [re.compile('.*Amazon.*'), re.compile('.*eBay.*'), re.compile('.*AliBaba.*')]}}
我想念什么?为什么我不能not in
使用PyMongo?
我的猜测是,也许您正在尝试设计一个更接近的表达式:
^(?!.*\b(Amazon|eBay|AliBaba)\b).*$
虽然不确定。
或许:
.*?\bAmazon\b.*
.*?\beBay\b.*
.*?\bAliBaba\b.*
如果您想浏览/简化/修改表达式,请在regex101.com的右上方面板中进行说明。如果您愿意,您还可以在此链接中观看,它如何与一些示例输入匹配。
我们的代码可能看起来像:
db.collection.find({name:{'$regex' : '^(?!.*\b(Amazon|eBay|AliBaba)\b).*$', '$options' : 'i'}})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句