0

我想了解有关mongodb聚合。我已经能够让这些命令为单个输出工作。我现在正在研究一个pymongo脚本来解析一个脏集合并将无菌数据输出到一个干净的集合中。我被困在如何正确定义变量,以便我可以在聚合命令中使用它们。请原谅我,如果这是一个微不足道的事情。但我一直在搜索在线文档一段时间,但我没有运气。如何定义和使用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 

如果我拿出的变量和使用适当的值,命令工作正常。

任何援助将不胜感激。

回答

1

在Python中,必须用一个字符串像引号“$项目”:

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

同样为“_id”,这是一个字符串。这与Javascript如何处理字典密钥不同。

请注意,您应该而不是围绕var_Instrument放置引号,因为它不是字符串文字,它是一个变量,其值是一个字符串。

+0

谢谢杰西。发现。我实现了这个广告,它完美的工作。干杯。 – JiggidyJoe