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.

Reply via email to