簡體   English   中英

在 PyMongo 中使用 $not $in $regex

[英]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'}})

參考

如何在 MongoDB 中使用“Not Like”運算符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM