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


