Агрегация Mongodb с несколькими условиями ввода для REST API - PullRequest
0 голосов
/ 06 июня 2019

Я создал api, который будет исключать три параметра, и отправил его mongo db для данных запросов, которые будут возвращать все записи в соответствии с параметром запроса.

http://localhost:2300/plans?state=MI&county=Macomb&version=2019.version

Это передаст три параметра сервисам -

State = OH , County = Clark , Version = 2019.version

Запрос, который выполняется для этого -

db.collection.aggregate([{
    $unwind: "$PLAN"
  },
  {
    $match: {
      "STATE_COUNTIES.COUNTY_NAME": "Clark",
      "STATE": "OH",
      "VERSION": "2019.version"
    }
  },
  {
    $group: {
      _id: "$PLAN",
    }
  },
  {
    $addFields: {
      key: 1
    }
  },
  {
    $group: {
      _id: "$key",
      plans: {
        $push: "$_id"
      }
    }
  },
  {
    $project: {
      _id: 0,
      plans: 1
    }
  }
])

JSON Для этого запроса база данных структурирована ниже -

{ 
    "_id" : ObjectId("5cf88fd8ea0798090c1abdf9"), 
    "YEAR" : "2020", 
    "VERSION" : "2019.version", 
    "UNIQUE_ID" : "H1234", 
    "STATE" : "OH", 
    "STATE_COUNTIES" : [
        {
            "STATE_NAME" : "OH", 
            "COUNTY_NAME" : "Clark"
        },
        {
            "STATE_NAME" : "OH", 
            "COUNTY_NAME" : "Ottawa"
        }, 
        {
            "STATE_NAME" : "OH", 
            "COUNTY_NAME" : "Wood"
        }
    ], 
    "PLAN" : "All health cover plan", 
    "ORG_NAME" : "ING Health, INC."
}

{ 
    "_id" : ObjectId("5cf89018ea0798090c1abdf8"), 
    "YEAR" : "2020", 
    "VERSION" : "2019.version", 
    "UNIQUE_ID" : "H4567", 
    "STATE" : "TX", 
    "STATE_COUNTIES" : [
        {
            "STATE_NAME" : "TX", 
            "COUNTY_NAME" : "Aransas"
        }, 
        {
            "STATE_NAME" : "TX", 
            "COUNTY_NAME" : "Bexar"
        }
    ], 
    "PLAN" : "All health cover plan", 
    "ORG_NAME" : "India health , INC."
}

Ожидание, что оно должно вернуть мне все подходящие планы, но это не работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...