2012-06-29 51 views
0

我有一個網頁,用戶可以在地圖上查看來自MongoDB的數據。我想要有幾個複選框,單選按鈕等來過濾地圖上看到的內容。如果我使用的MySQL我會做在pymongo動態構建查詢

query = "SELECT * FROM table WHERE x = 1" 
if checkbox == "checked": 
    query += "AND WHERE y = 2" 

我該如何複製與pymongo?

回答

5

您只需建立查詢字典來代替:

query = {'x': 1} 
if checkbox == 'checked': 
    query['y'] = 2 

results = db.collection.find(query) 

做一個OR查詢應該是這樣的:

query = [{'x': 1}] 
if checkbox == 'checked': 
    query.append({'y': 2}) 

results = db.collection.find({'$or': query}) 
+0

而其更清潔的動態構建蒙戈查詢比它是建立原始的sql文本(不是在談論一個ORM) – jdi

+0

這就像一個魅力!現在,如果我想做OR而不是AND呢? – user1084826

+0

@ user1084826:你應該[閱讀文檔](http://www.mongodb.org/display/DOCS/OR+operations+in+query+expressions)。它關於如何格式化查詢就在那裏。 – jdi