如何解决无法运行MongoDB聚合命令OperationFailure
我正在尝试在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 }
解决方法
当在指定数据库上运行聚合函数时,我认为不需要通过提供参数来再次指定集合。我在这里(https://docs.mongodb.com/manual/reference/command/aggregate/#command-fields)上发现了一个集合参数,因此我将函数调用更改为:
mongo.test.aggregate(aggregate="test",pipeline=self.pipeline)
,现在可以正常工作了。一些文档从未提到过collection参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。