2012-04-04 13 views
19

Jak używać sql "like" w PyMongo?Jak używać sql "like" w PyMongo?

>>> db.houses.find().count() 
11616 
>>> db.houses.find({"hid":u"16999"}).count() 
1 
>>> db.houses.find({"hid":u"/9/"}).count() 
0 

documentation mówi, że SQL "like" (SELECT * FROM users WHERE name LIKE "%Joe%") w MongoDB jest db.users.find ({name:/Joe/}).

Jeśli podasz zapytanie bezpośrednio do mongyb interfejsu cli-client, wszystko działa poprawnie, ale nie działa w pymongo.

Na czym polega problem?

Dzięki.

Odpowiedz

31

pymongo nie obsługuje regex literały, trzeba użyć regex '$' predykat:

db.houses.find({"hid":{"$regex": u"9"}}) 
+0

Dzięki! To jest praca! –

+0

jaka jest składnia, jeśli 9 jest zmienną (search_word)? db.houses.find ({"hid": {"$ regex": usearch_word}}) .... ??? – vogash

+0

@vogash: Chyba tak. Zauważ, że mongodb używa regexów PCRE, a nie pythona. – georg