dongshi3818 2019-04-05 09:44
浏览 65

golang mongodb组聚合返回伪记录

I am trying fetch documents from mongdb using golang code base. I created a pipeline and am using aggregate function like this:

pipeline := []bson.M{
        bson.M{
            "$group": bson.M{"_id": "$user_id", "score": bson.M{"$max": "$score"}},
        },
        bson.M{
            "$sort": bson.M{"score": 1},
        },
        bson.M{
            "$limit": 10,
        },
    }

collection := dBClient.Database("db").Collection("collection")
iter, err := collection.Aggregate(context.Background(), pipeline)
var sc score
for iter.Next(context.Background()) {
        iter.Decode(&sc)
        if err != nil {
            log.Fatal(err)
        }
        //print element data from collection
        fmt.Printf("Element %v", sc)
    }

    type score struct {
      ID        primitive.ObjectID `bson:"_id,omitempty"`
      UserID    string             `bson:"user_id"`
      Score     int32              `bson:"score"`
      Timestamp int64              `bson:"timestamp"`
    }

but all i am getting is bunch of zeros

Element {ObjectID("000000000000000000000000")  0 0}
Element {ObjectID("000000000000000000000000")  0 0}
Element {ObjectID("000000000000000000000000")  0 0}
Element {ObjectID("000000000000000000000000")  0 0}
Element {ObjectID("000000000000000000000000")  0 0}
Element {ObjectID("000000000000000000000000")  0 0}
Element {ObjectID("000000000000000000000000")  0 0}
Element {ObjectID("000000000000000000000000")  0 0}
Element {ObjectID("000000000000000000000000")  0 0}

same query runs fine on robo3t

db.getCollection('collection').aggregate([
    {"$group":
         {_id:"$user_id",
         score:{"$max":"$score"}}},
    {"$sort":{"score":-1}},
    {"$limit":10}
])

although when i don't use '$group' it works fine and gives me proper records.

pipeline := []bson.M{
        bson.M{
            "$sort": bson.M{"score": 1},
        },
        bson.M{
            "$limit": 10,
        },
    }

what am i missing?

i am using go.mongodb.org/mongo-driver/mongo driver

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
    • ¥20 软件测试决策法疑问求解答
    • ¥15 win11 23H2删除推荐的项目,支持注册表等
    • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
    • ¥15 qt6.6.3 基于百度云的语音识别 不会改
    • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
    • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
    • ¥15 lingo18勾选global solver求解使用的算法
    • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
    • ¥20 测距传感器数据手册i2c