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