Проблемът с вашия golang код е, че не сте групирали.
Можете да използвате Pipe
който подготвя конвейер за агрегиране:
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)