如何在 pymongo 聚合脚本中定义和使用变量



我正在尝试了解mongodb聚合。我已经能够让命令适用于单个输出。我现在正在开发一个 pymongo 脚本来解析脏集合并将无菌数据输出到干净的集合中。我纠结于如何正确定义变量,以便我可以在聚合命令中使用它们。如果事实证明这是一件微不足道的事情,请原谅我。但是我已经搜索在线文档一段时间了,但我没有任何运气。

这是到目前为止的脚本:

from pymongo import MongoClient
import os, glob, json
#
var_Ticker = "corn"
var_Instrument = "Instrument"
var_Date = "Date"
var_OpenPrice = "prices.openPrice.bid"
var_HighPrice = "prices.highPrice.bid"
var_LowPrice = "prices.lowPrice.bid"
var_ClosePrice = "prices.closePrice.bid"
var_Volume = "prices.lastTradedVolume"
var_Unwind = "$prices"
#
#
client = MongoClient()
db = client.cmdty
col_clean = var_Ticker + "_clean"
col_dirty = var_Ticker + "_dirty"
db[col_dirty].aggregate([{$project:{_id:0,var_Instrument:1,var_Date:1,var_OpenPrice:1,var_HighPrice:1,var_LowPrice:1,var_ClosePrice:1,var_Volume:1}},{$unwind:var_Unwind},{$out:col_clean}])

这是我得到的错误:

>>> db[col_dirty].aggregate([{$project:{_id:0,var_Instrument:1,var_Date:1,var_OpenPrice:1,var_HighPrice:1,var_LowPrice:1,var_ClosePrice:1,var_Volume:1}},{$unwind:var_Unwind},{$out:col_clean}])
  File "<stdin>", line 1
    db[col_dirty].aggregate([{$project:{_id:0,var_Instrument:1,var_Date:1,var_OpenPrice:1,var_HighPrice:1,var_LowPrice:1,var_ClosePrice:1,var_Volume:1}},{$unwind:var_Unwind},{$out:col_clean}])
                              ^
SyntaxError: invalid syntax

如果我取出变量并使用正确的值,则该命令工作正常。

任何协助将不胜感激。

在 Python 中,你必须用引号括起来像"$project"这样的文字字符串:

db[col_dirty].aggregate([{"$project":{"_id":0,var_Instrument:1 ...

"_id"也是如此,它是一个文字字符串。这与Javascript处理字典键的方式不同。

请注意,您不应该在var_Instrument两边加上引号,因为这不是字符串文字,它是一个值为字符串的变量。

最新更新