2015-11-25 24 views
5

Volevo trovare sotto-stringhe all'interno di un campo in MongoDB usando PyMongo.Trova sottostringhe in PyMongo

la seguente query funziona bene ed è quello che ho bisogno:

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

Tuttavia, se provo passando il valore /cat|Dog/i come una stringa in Python, non funziona.

Esiste un modo per replicare la query in PyMongo?

Nota: /cat|Dog/i è il valore del campo di un'altra raccolta. È nella forma 'gatto cane'. Fondamentalmente, voglio abbinare sottostringhe in un campo con sottostringhe in un altro.

risposta

6

È necessario compilare il modello di espressione regolare utilizzando la funzione re.compile() in un oggetto espressione regolare.

import re 

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