我在python中有以下代码试图传递mongo
查询。连接的细节如下。当我执行此操作时,我得到“语法无效”并且语法错误指向代码"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"}}}])))
答案 0 :(得分:1)
您使用的语法错误。 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)