繁体   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