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.

Reply via email to