Find substrings in PyMongo

2019-06-19 00:10发布

问题:

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.

回答1:

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}})