[英]Pass parameter in string mongo query in python
我的數據庫中有以下查詢
query = u'collection.aggregate([{ "$match": { "code": { "$in": {__sensors__}} } },{"$project" : {"_id" : 0}},{"$group" : {"_id": "$code", "data": {"$last": "$$ROOT"}}}])'
我有以下參數,現在我想在上面的查詢中傳遞該參數。
args = {"__sensors__": ["GP0", "GP1", "GP5", "GP6"]}
我正在嘗試追蹤,但這給我一個錯誤。
query.format(**args)
以上聲明給我這個錯誤
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-44-7db1aba33ea5> in <module>()
----> 1 a.query.format({"__sensors__": []})
KeyError: u' "$match"'
有人可以給我解決上述問題的方法嗎?
您的問題是因為{
和}
。 當您以format
使用它們時,python認為這可能是一個變量。 因此,要解決此問題,您需要使其倍增。 如下所示:
query = u'collection.aggregate([{{ "$match": {{ "code": {{ "$in": {__sensors__}}} }} }},{{"$project" : {{"_id" : 0}}}},{{"$group" : {{"_id": "$code", "data": {{"$last": "$$ROOT"}}}}}}])'
如您所見,我沒有將{__sensors__}
加倍。 因為您要在query.format(**args)
行中替換它。
最終結果將是這樣的:
'collection.aggregate([{ "$match": { "code": { "$in": [\'GP0\', \'GP1\', \'GP5\', \'GP6\']} } },{"$project" : {"_id" : 0}},{"$group" : {"_id": "$code", "data": {"$last": "$$ROOT"}}}])'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.