2014-07-17 73 views
0

我對mongoengine和MongoDB一般都很陌生。我正在嘗試在Flask中建立一個高級搜索頁面,並填寫許多字段。如何用mongoengine批量查詢字段?

當按下搜索按鈕時Flask將調用一個函數,該函數獲取url的所有參數,本質上構成參數的Python字典。

有沒有一種方法可以使用該字典動態查詢mongoengine(或任何其他庫)的MongoDB字段?既可以,也可以將其放入其他數據結構中?

所以,舉例來說,如果namesetcolor領域分別填寫,相當於SQL語句我想應該是:

SELECT * 
FROM myTable 
WHERE `name` = 'nameval' AND `set` = 'setval' AND `color` = 'colorval'; 

如果mongoengine不能做到這一點,是一個在那裏有可能?

此外,我會硬編碼這個,但有大約25個字段來查詢,這意味着會有很多重複坐在。

+0

嘗試在原pymongo做,應該比較容易,比mongoengine更快。 –

+0

您是否閱讀過MongoEngine的[查詢文檔](http://docs.mongoengine.org/guide/querying.html)? – dirn

回答

1

是的,你可以通過,只要它們是作爲kwargs例如,傳遞給被過濾的字典:

MyModel.objects(**myQueryDictionary) 
+0

這似乎應該工作。如果我想讓它變成'name LIKE'%cool%''呢?我想要將所有的字段與'LIKE'參數進行比較。 –

+0

那麼'objects'或'filter'需要一本詞典 - 它的形狀取決於你想要的查詢 - 查看文檔 - > http://docs.mongoengine.org/guide/querying.html – Ross

+0

好的。感謝你的回答。我昨天看了看,但接近一天結束,我非常疲憊。我會再試一次。 –