Я пытаюсь получить документы из 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 / монго-водитель / монго-драйвер