我遇到了一个问题。我尝试通过“COL”数组之外的 LOC 标识符查询此文档以获取金额和分组的总和。
{
"_id" : ObjectId("57506d74c469888f0d631be6"),
"LOC" : "User001",
"COL" : [
{
"date" : "25/03/2016",
"number" : "Folio009",
"amount" : 100
},
{
"date" : "25/04/2016",
"number" : "Folio010",
"amount" : 100
}
] }
此命令在 mongo 中有效,但我无法使用 Pymongo 包使其在 Python 中有效:
Mongo 查询(工作)
db.perfiles.aggregate({"$unwind": "$COL"},
{ "$group": { _id: "$LOC", "sum" : {"$sum" : "$COL.amount" }}})
Pymongo(不工作)
from pymongo import MongoClient
client = MongoClient()
db = client['temporal']
docs = db.perfiles
pipeline = [{"$unwind": "$COL"},
{"$group": {"_id": "$LOC", "count": {"$sum": "$COL.amount"}}}
]
list(db.docs.aggregate(pipeline))
在 Pymongo 中查询同一个查询有什么建议吗?谢谢!
原文由 Alfredo 发布,翻译遵循 CC BY-SA 4.0 许可协议
我假设您在 Python 中与 MongoDB 建立了有效连接。
以下代码片段将在
result.
中返回一个 MongoDB 游标现在您可以将
cursor
转换为列表如果您打印结果的值,您将获得与 Shell 查询中完全相同的结果。
更新:
我看到您在 python 代码中将 —
aggregate
函数调用为db.docs.aggregate(pipeline)
。您需要将其称为docs.aggregate...
而无需db
。请参见上面的示例。