簡體   English   中英

在python中的字符串mongo查詢中傳遞參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM