I can query my mongodb collection to get the ipv4Addresses based on the nfType and the minimum distance using the command line query
db.nfinstancesdb.aggregate([ { "$match": { "nfType": "AMF" } }, { "$unwind": "$ipv4Addresses" }, { $group: { "_id": "$distance", "ipv4Addresses": { "$addToSet": "$ipv4Addresses" } } }, { "$sort": { "_id": 1 } }, { "$limit": 1 }]) This give the output am expecting as [{"_id": 10,"ipv4Addresses": ["172.16.0.11","172.16.0.10"]}] How can I write the bson form of the above query on Go? I did in the function below but am getting all the ipv4Addresses instead of the above result. func (m *NfInstanceDataAccess) FindIp(nfType string) ([]NfInstance, error) { var ip []NfInstance findQ := bson.M{"nfType": nfType} filter := bson.M{"ipv4Addresses": 1} err := db.C(COLLECTION).Find(findQ).Select(filter).All(&ip) if err != nil { return ip, err } return ip, nil} My collection has the following items { "nfInstanceID": "1", "nfType": [ "AMF" ], "nfStatus": [ "REGISTERED" ], "ipv4Addresses": [ "172.16.0.10" ], "distance": 10 }, { "nfInstanceID": "2", "nfType": [ "UPF" ], "nfStatus": [ "REGISTERED" ], "ipv4Addresses": [ "172.16.0.20" ], "distance": 20 }, { "nfInstanceID": "3", "nfType": [ "AMF" ], "nfStatus": [ "REGISTERED" ], "ipv4Addresses": [ "172.16.0.30" ], "distance": 30 }, { "nfInstanceID": "4", "nfType": [ "AMF" ], "nfStatus": [ "REGISTERED" ], "ipv4Addresses": [ "172.16.0.11" ], "distance": 10 } And I am expecting the same or similar output. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/ead01e3b-2543-48ed-88e7-343e0748b28b%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.