[英]Using $not $in $regex in PyMongo
我想做一個 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 not in
工作?
我的猜測是,也許您正在嘗試設計一個有點接近於的表達式:
^(?!.*\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'}})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.