2013-01-19 83 views
1

pymongo有沒有辦法使用字符串來執行查詢而不是字典? 我希望能夠使用與python/pymongo上的MongoDB shell完全相同的語法。那可能嗎?pymongo使用字符串來查詢而不是字典

+0

你在找什麼樣的語法?你可以定義一個輔助函數來爲你做這件事。例如,我很常見的創建一個函數,比如'def find(s):return mongo.db.col.findOne({「_ id」:s})' – Anorov

+0

是的,但那不是我想要的。我正在工作的poc需要執行用戶提供的任何查詢。我想把所有的實際工作都留給MongoDB服務器本身。 –

+0

這聽起來不像是個好主意。你知道一個詭計多端的用戶可以讀寫任何他們想要的數據庫嗎? – Anorov

回答

0

MongoDB shell是一個全功能的JavaScript控制檯/解釋器,帶有一些綁定到帶有mongodb服務器的消息。相比之下,PyMongo缺乏嵌入式JavaScript解釋器或JavaScript解析器,因此您無法按原樣執行MongoDB外殼查詢。

請注意,mongo shell查詢不是json文檔,因爲它們能夠包含一些函數和一些對象構造函數,如{value: 2+2}

+0

是的,你是對的,把所有的事情都放到了上下文中。然後,我正在尋找的是通過pymongo執行JavaScript代碼的方法。我會看看mjhm提出的eval() –

0

eval()功能可能是你要找的。請注意,它在數據庫服務器上執行JS代碼 - 不是在某些客戶端的Mongo shell中。因此它有很多警告,我強烈建議不要在嚴重的生產環境中使用它。有關詳細信息和示例,請參閱Mongo db.eval docs

+0

這可能確實是我正在尋找的。我要做一些測試,並讓你知道結果。 –

+0

這不會有效 - 我建議使用pymongo給你的慣用python。它會更有效率,並且是本地python,它緊密地映射到本地shell。 – Ross

相關問題