Vaulstein
Vaulstein

Reputation: 22041

Find substrings in PyMongo

I wanted to find sub-strings within a field in MongoDB using PyMongo.

The following query works fine and is what I require:

db.collection.find({ "Animal": /cat|Dog/i})

However, if I try passing the value /cat|Dog/i as a string in Python, it doesn't work.

Is there a way to replicate the query in PyMongo?

Note: /cat|Dog/i is value of field from another collection. It is in the form 'cat Dog'. Basically, I want to match substrings in one field with substrings in another.

Upvotes: 13

Views: 6509

Answers (1)

Sede
Sede

Reputation: 61225

You need to compile your regular expression pattern using re.compile() function into a regular expression object.

import re

pat = re.compile(r'cat|Dog', re.I)
db.collection.find({ "Animal": {'$regex': pat}})

Upvotes: 15

Related Questions