Преобразование результата MongoDB $ max в данные Голанга - PullRequest
1 голос
/ 15 октября 2019

Я пытаюсь получить максимальные значения из коллекции MongoDB из моего кода Go. Какой тип я должен использовать для декодирования результата?

Когда я использую bson.D{} в качестве val2 типа, результат выглядит как [{_id <nil>} {max 66} {cnt 14}].

Вот код:

    filter := []bson.M{{
        "$group": bson.M{
            "_id": nil,
            "max": bson.M{"$max": "$hellid"},
        }},
    }

    cursor, err := collection.Aggregate(ctx, filter)

    for cursor.Next(ctx) {
        val2 := ???
        err := cursor.Decode(&val2)
        fmt.Printf("cursor: %v, value: %v\n", cursor.Current, val2)
    }
}

1 Ответ

1 голос
/ 15 октября 2019

Использование bson.D уже работает, как вы представили. Проблема может заключаться в том, что вы не можете «легко» получить значения max и cnt.

Смоделируйте ваш результирующий документ с такой структурой:

type result struct {
    Max   int `bson:"max"`
    Count int `bson:"cnt"
}

Хотя cnt не генерируется предоставленным вами примером кода.

А затем:

var res result
err := cursor.Decode(&res)
...