如何在 Pymongo 聚合脚本中定义和使用变量
How to Define and Use Variables in Pymongo Aggregation Script
我正在尝试了解 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 周围加上引号,因为它不是字符串文字,它是一个值为字符串的变量。
我正在尝试了解 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 周围加上引号,因为它不是字符串文字,它是一个值为字符串的变量。