Je peux utiliser le SQL Like
Operator en utilisant pymongo
,
db.test.find({'c':{'$regex':'ttt'}})
Mais comment puis-je utiliser Not Like
Opérateur?
J'ai essayé
db.test.find({'c':{'$not':{'$regex':'ttt'}})
mais j'ai eu une erreur:
OperationFailure: $ ne peut pas avoir de regex
De la docs :
L'opérateur $ not ne prend pas en charge les opérations avec l'opérateur $ regex. Utilisez plutôt // ou dans vos interfaces de pilote, utilisez la fonctionnalité d’expression régulière de votre langage pour créer des objets d’expression régulière. Prenons l'exemple suivant qui utilise l'expression de correspondance de modèle //:
db.inventory.find( { item: { $not: /^p.*/ } } )
EDIT (@idbentley):
{$regex: 'ttt'}
Est généralement équivalent à /ttt/
Dans mongodb, votre requête deviendra donc db.test.find({c: {$not: /ttt/}}
EDIT2 (@KyungHoon Kim):
En python, cela fonctionne: 'c':{'$not':re.compile('ttt')}
Vous pouvez faire avec regex qui ne contient pas un mot. En outre, vous pouvez utiliser $options => i
en cas de recherche insensible.
Ne contient pas string
db.collection.find({name:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})
Insensible à la casse exacte string
db.collection.find({name:{'$regex' : '^string$', '$options' : 'i'}})
Commence par string
db.collection.find({name:{'$regex' : '^string', '$options' : 'i'}})
Se termine par string
db.collection.find({name:{'$regex' : 'string$', '$options' : 'i'}})
Contient string
db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})
Conservez-le en tant que signet et référence pour toute autre modification dont vous pourriez avoir besoin. http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/