我正在尝试了解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
如果我取出变量并使用正确的值,则该命令可以正常工作。
非常感谢任何协助。
答案 0 :(得分:1)
在Python中,你必须包含一个文字字符串,如&#34; $ project&#34;在引号中:
db[col_dirty].aggregate([{"$project":{"_id":0,var_Instrument:1 ...
&#34; _id&#34;也是如此,这是一个文字字符串。这与Javascript处理字典键的方式不同。
请注意,你应该不在var_Instrument周围加上引号,因为那不是字符串文字,它是一个值为字符串的变量。