2012-04-04 44 views
19

Cách sử dụng sql "like" trong PyMongo?Cách sử dụng sql "like" trong PyMongo?

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

Các documentation nói rằng sql "like" (SELECT * FROM users WHERE name LIKE "%Joe%") trong MongoDB là db.users.find ({name:/Joe/}).

Nếu bạn chỉ định truy vấn trực tiếp đến giao diện khách hàng mongodb, thì mọi thứ hoạt động chính xác nhưng không hoạt động trong pymongo.

Sự cố là gì?

Cảm ơn.

Trả lời

31

pymongo không hỗ trợ literals regex, bạn phải sử dụng '$ regex' vị:

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

Cảm ơn! Đó là công việc! –

+0

cú pháp là gì nếu 9 được biểu diễn dưới dạng biến (search_word)? db.houses.find ({"hid": {"$ regex": usearch_word}}) .... ??? – vogash

+0

@vogash: Tôi đoán là có. Lưu ý rằng mongodb sử dụng PCRE regexes, không phải của python. – georg

Các vấn đề liên quan