агрегация групп golang mongodb, возвращающая фиктивные записи - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь получить документы из mongdb, используя базу кода golang.Я создал конвейер и использую агрегатную функцию, подобную этой:

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"`
    }

, но все, что я получаю, это куча нулей

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}

Тот же запрос отлично работает на robo3t

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

хотя, когда я не использую '$ group', он работает нормально и выдает правильные записи.

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

что мне не хватает?

я использую go.mongodb.org / монго-водитель / монго-драйвер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...