具有REST API的多个输入条件的Mongodb聚合

时间:2019-06-06 07:30:09

标签: mongodb mongodb-query

我已经创建了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."
}

期望会返回所有匹配的计划,但这对我不起作用。

0 个答案:

没有答案