为了账号安全,请及时绑定邮箱和手机立即绑定

无法运行 MongoDB 聚合命令(OperationFailure)

无法运行 MongoDB 聚合命令(OperationFailure)

一只萌萌小番薯 2023-10-26 16:00:29
我正在尝试在 python 中使用 MongoDB 聚合管道命令(使用 PyMongo),但遇到此错误:pymongo.errors.OperationFailure: {aggregate: 1} is not valid for '$match'; a collection is required., full error: {'ok': 0.0, 'errmsg': "{aggregate: 1} is not valid for '$match'; a collection is required.", 'code': 73, 'codeName': 'InvalidNamespace'}我尝试删除第一个匹配项,但它只会将“$match”更改为“$project”。这是我正在使用的管道:    [        {            "$match": {"$text": {"$search": "{self.keyword}"}}        },        {            "$project":            {                "wholeDate": {"$dateFromString": {"dateString": "$date"}},                "year": {"$year": {"$dateFromString": {"dateString": "$date"}}},            }        },        {            "$match": {"wholeDate": {"$gte": "{self.date_from_}", "$lte": "{self.date_until_}"}}        },        {            "$group":            {                "_id": {"year": "$year"},                "count": {"$sum": 1}            }        }    ]当我直接在 MongoDB 上运行相同的管道时,它工作得很好。工作时应该给出以下输出:{ "_id" : { "year" : 2018 }, "count" : 34 }
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

我认为在指定数据库上运行聚合函数时不需要通过给出参数来再次指定集合。我在这里(https://docs.mongodb.com/manual/reference/command/aggregate/#command-fields)发现有一个集合参数,所以我将函数调用更改为:

mongo.test.aggregate(aggregate="test", pipeline=self.pipeline)

现在效果很好。有些文档从未提到集合参数。



查看完整回答
反对 回复 2023-10-26
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信