Hi, I have this pipeline in bson
pipe := db.C(COLLECTION).Pipe([]bson.M{ {"$match": bson.M{"nfType": "AMF"}}, {"$unwind": bson.M{"$ipv4Addresses"}}, {"$group": bson.M{ "_id": bson.M{"$distance"}, "ipv4Addresses": bson.M{"$addToSet": "$ipv4Addresses"}, }}}) err := pipe.All(&ip) but am getting error "missing key in map literal" in line {"$unwind": bson.M{"$ipv4Addresses"}}, and "_id": bson.M{"$distance"}. I have tried changing them to {"$unwind": "$ipv4Addresses"}, and bson.M{"_id": "$distance"} but it not working. On Tuesday, July 9, 2019 at 3:49:06 PM UTC+3, daniel wilson wrote: > > > > 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/016ac7f1-775d-464a-b041-e72a5b3fbf39%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.