【问题标题】:How to Define and Use Variables in Pymongo Aggregation Script如何在 Pymongo 聚合脚本中定义和使用变量
【发布时间】:2018-03-22 14:52:02
【问题描述】:

我正在尝试了解 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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework pymongo pymongo-3.x


    【解决方案1】:

    在 Python 中,您必须将像 "$project" 这样的文字字符串括在引号中:

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

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

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

    【讨论】:

    • 谢谢杰西。发现。我实施了这个广告,效果很好。干杯。
    • 如何在python中使用$$some_variablepymongo
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2016-03-06
    相关资源
    最近更新 更多