Golang mongodb 聚合错误:管道阶段规范对象必须仅包含一个字段
问题内容
我想获取过去一个月内按名称分组的计数。当我尝试在 golang mongo 客户端中运行以下查询时。我收到错误:
管道阶段规范对象必须仅包含一个字段。
cond := &bson.D{ bson.E{Key: "$createTime", Value: bson.E{Key: "$gte", Value: time.Now().AddDate(0, -1, 0)}}, } match := bson.D{{Key: "$match", Value: cond}} group := bson.D{{Key: "$group", Value: bson.D{ {Key: "_id", Value: "$name"}, {Key: "count", Value: bson.D{{Key: "$sum", Value: 1}}}, }}} cursor, err := col.Aggregate(ctx, mongo.Pipeline{match, group})
我不知道该怎么办?
正确答案通过进行以下调整,我能够获得所需的结果:
更改为 ,我假设您的字段名称不以 开头
更改为
cond := &bson.D{ bson.E{Key: "createTime", Value: bson.D{{Key: "$gte", Value: time.Now().AddDate(0, -1, 0)}}}, } match := bson.D{{Key: "$match", Value: cond}} group := bson.D{{Key: "$group", Value: bson.D{ {Key: "_id", Value: "$name"}, {Key: "count", Value: bson.D{{Key: "$sum", Value: 1}}}, }}} cursor, err := col.Aggregate(context.TODO(), mongo.Pipeline{match, group}) if err != nil { log.Println("Error: ", err) }
调试此类问题的一些技巧:
始终检查 变量中返回的错误消息
您可以通过以下方式启用原始数据库命令日志记录:
uri := options.Client().ApplyURI(appSettings.MongoDbUri) if appSettings.LogDatabaseCommands { cmdMonitor := &event.CommandMonitor{ Started: func(_ context.Context, evt *event.CommandStartedEvent) { log.Print(evt.Command) }, } uri.SetMonitor(cmdMonitor) }
声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至201542412@QQ.com举报,一经查实,本站将立刻删除。
相关推荐
-
揭露Ajax异常,解决错误的方法一览
Ajax异常大揭秘,如何应对各种错误,需要具体代码示例2019年,前端开发已经成为互联网行业中不可忽视的重要岗位。而Ajax作为前端开发中最常用的技术之一,能够实现页面异步加载和数据交互,其重要性不言
-
常见错误及解决方法:使用pip安装第三方库的解决方案
解决问题:使用pip安装第三方库时常见错误及解决方法,需要具体代码示例随着Python的广泛应用,使用第三方库已成为日常开发中不可或缺的一部分。而pip是Python包管理工具,它的简单易用性使得安装
-
pip升级错误的原因及解决方法
pip升级失败的原因及解决方案,需要具体代码示例随着Python的流行和广泛应用,pip成为了Python软件包的默认包管理工具。通过pip,我们能够方便地安装、升级和管理各种Python库和工具。然
-
常见的Golang注释错误及其解决方法
Golang中常见注释错误及解决方法在编程过程中,注释是非常重要的一部分,它可以提供对代码逻辑的解释、功能的说明以及协作开发时的沟通等作用。然而,即使是注释这样简单的东西,也可能会出现一些错误。本文将
-
帝国CMS之esub()截取字段函数
说明:后缀为截取字符后附带内容,此参数可以省略。