在PyMongo中的$ regex中使用$ not $

nb_nb_nb

我想做一个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'}})

参考

如何在MongoDB中使用“不喜欢”运算符

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章