MongoDB'de 'Beğenme' operatörünü nasıl kullanabilirim


103

SQL LikeOperatörünü kullanarak pymongo,

db.test.find({'c':{'$regex':'ttt'}})

Ama Not LikeOperatörü nasıl kullanabilirim ?

denedim

db.test.find({'c':{'$not':{'$regex':'ttt'}})

ama hata var:

OperationFailure: $ bir normal ifadeye sahip olamaz


1
Bunun biraz geç olduğunu biliyorum ama MongoDB 4.2'de $notve $regexoperatörü kombinasyonu benim için çalışıyor gibi görünüyor.
b00r00x0

Yanıtlar:


145

Gönderen docs :

$ Değil operatörü, $ regex operatörüyle yapılan işlemleri desteklemez. Bunun yerine // veya sürücü arayüzlerinizde normal ifade nesneleri oluşturmak için dilinizin normal ifade özelliğini kullanın. Örüntü eşleştirme ifadesini kullanan aşağıdaki örneği düşünün //:

db.inventory.find( { item: { $not: /^p.*/ } } )

DÜZENLE (@idbentley):

{$regex: 'ttt'}/ttt/mongodb ile eşdeğerdir , bu nedenle sorgunuz şöyle olur:

db.test.find({c: {$not: /ttt/}}

EDIT2 (@KyungHoon Kim):

In piton , bir eser aşağıda:

'c':{'$not':re.compile('ttt')}

2
Açık olmak gerekirse {$regex: 'ttt'}, genellikle /ttt/mongodb ile eşdeğerdir , dolayısıyla sorgunuz olur db.test.find({c: {$not: /ttt/}}.
idbentley

@idbentley teşekkür ederim. Cevabımı açıklamanızla güncelledim.
shx2

1
Çok teşekkür ederim. Diğer insanlar için kullandım 'c':{'$not':re.compile('ttt')}. Tabii ki, yeniden ithalat yapmanız gerekiyor
KyungHoon Kim

Harika. Gelecek nesil için cevaba yorumunuzu da ekledim.
shx2

1
Bu, $ ne ve $ regex ile aynı durum gibi görünüyor. Biri bunu onaylayabilir mi veya en azından ekleme yapabilir mi?
DBrown

57

Kelime içermeyen regex ile yapabilirsiniz. Ayrıca, $options => iduyarsız arama durumunda da kullanabilirsiniz .

İçermez string

db.collection.find({name:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})

Tam büyük / küçük harfe duyarlı değil string

db.collection.find({name:{'$regex' : '^string$', '$options' : 'i'}})

İle başlar string

db.collection.find({name:{'$regex' : '^string', '$options' : 'i'}})

İle biter string

db.collection.find({name:{'$regex' : 'string$', '$options' : 'i'}})

İçerir string

db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})

Bunu bir yer imi ve ihtiyacınız olabilecek diğer değişiklikler için referans olarak saklayın. http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.