簡體   English   中英

將mongo聚合傳遞給python

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM