2015-11-25 2 views
5

Chciałem znaleźć pod-ciągi w polu w MongoDB za pomocą PyMongo.Znajdź podciągów w PyMongo

Następująca kwerenda działa dobrze i jest to, co wymaga:

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

Jednak gdy próbuję przechodzącą wartość /cat|Dog/i jako ciąg w Pythonie, to nie działa.

Czy istnieje sposób na zreplikowanie zapytania w PyMongo?

Uwaga: /cat|Dog/i jest wartością pola z innej kolekcji. Jest w formie "cat Dog". Zasadniczo chcę dopasować podciągi w jednym polu z podciągami w innym.

Odpowiedz

6

Musisz skompilować swój wzór wyrażenia regularnego, używając funkcji re.compile() do obiektu wyrażenia regularnego.

import re 

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