您的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)