Vấn đề với mã golang của bạn là bạn chưa nhóm.
Bạn có thể sử dụng Pipe
chuẩn bị một đường dẫn để tổng hợp:
pipe := db.C(COLLECTION).Pipe([]bson.M{
{"$match": bson.M{"nfType": "AMF"}},
{"$unwind": "$ipv4Addresses"},
{"$group": bson.M{
"_id": "$distance",
"ipv4Addresses": bson.M{"$addToSet": "$ipv4Addresses"},
}},
{"$sort": bson.M{"_id": 1}},
{"$limit": 1},
})
err := pipe.All(&ip)