2013-02-11 74 views
1

爲什麼mongodb在shell中返回結果,而不是在python中返回結果。MongoDB在python中沒有返回結果

殼牌:

> db.posts.find({ Body: /html/ }).count() 
5524 

Python代碼:

query = {"Body": '/html/'} 
r = mo_db.posts.find(query) 
print r.count() 
> 0 

所有其他查詢做工精細,只要找到()工作正常。有另一種方法來處理斜線?!
我也測試了r'/ html /'和u'/ html /'。

回答

2

您查詢的值是一個字符串,而不是實際的正則表達式對象。 /.../語法是用於構造正則表達式的javascript語法糖,但在python中,您需要使用re模塊來完成此操作。

試試這個:

import re 
pattern = re.compile("html") 
query = {"Body": pattern} 
r = mo_db.posts.find(query) 
print r.count() 
+0

合作。謝啦。我認爲/.../是由mongo處理的。 – hcorreia 2013-02-12 00:04:18

+1

或者只使用'$ regex' – Vor 2013-02-12 05:42:58