[英]Passing mongo aggregation to python
我在python中嘗試傳遞mongo
查詢的以下代碼段。 連接的詳細信息如下。 當我執行此操作時,我得到“無效的語法”,並且在代碼"total:{"...
之后緊接語法錯誤點"total:{"...
我認為這與Python中的字典對象有關,但我對如何進行操作感到有些困惑。
import pymongo
from pymongo import MongoClient
client = MongoClient()
db = client.trackers
a = list((db.monthlytracker.aggregate([{$match:
{'Country':'Japan','Vendor':'Others'}},
{$group:{_id:"$Fiscal Quarter",total:{$sum:"$Units"}}}])))
您使用了錯誤的語法。 pymongo驅動程序僅接受字符串:
a = list((db.monthlytracker.aggregate([{'$match':
{'Country':'Japan','Vendor':'Others'}},
{'$group':{'_id':"$Fiscal Quarter",'total':{'$sum':"$Units"}}}])))
只需引用所有內容,您就可以做到。
問題是python看起來要評估$group
$match
等,並且它不知道這些變量。 因此,您可能會收到類似以下的錯誤:
$match
File "<ipython-input-1-972ca9ab5d06>", line 1
$match
^
SyntaxError: invalid syntax
要么:
NameError: name 'total' is not defined
還有最后一件事,請謹慎操作游標以列出對象,就像使用以下方法一樣:
list(db.monthly.tracker.aggregate(...))
這很容易消耗您的內存。 相反,您應該像下面這樣遍歷游標中的項目:
for item in db.monthly.tracker.aggregate(...):
do_your_magic_here(item)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.