情况下如何在MONGODB中使用案例陈述

时间:2018-10-23 09:21:10

标签: mongodb mongoose mongodb-query

我是Mongo Db的新手,希望对此查询有所帮助。

 DATA:

       {
            "_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
            "RESOURCE_ID" : "100-101",
            "CITY_ID" : "200-1239",
            "EVENT" : "0"
        },
        {
            "_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
            "RESOURCE_ID" : "100-101",
            "CITY_ID" : "200-1239",
            "EVENT" : "2"
        },
        {
            "_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
            "RESOURCE_ID" : "100-101",
            "CITY_ID" : "200-1239",
            "EVENT" : "3"
        },{
            "_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
            "RESOURCE_ID" : "100-101",
            "CITY_ID" : "800-1239",
            "EVENT" : "1"
        }

我使用匹配条件编写了以下聚合管道 “ CITY_ID”:“ 200-1239”和“ RESOURCE_ID”:“ 100-101”以及如何在'1'时更改'I'(或)事件,而在'2'之后更改'U'(或)事件当任何人都建议我时,如果“ 0”然后“ V”,那么“ 3”然后是“ D”(或)事件。

db.COLLECTION.aggregate([{

{
        $match:{
            $and:[{"CITY_ID" : "200-1239","RESOURCE_ID" : "100-101"}]
        }
    },

 ])

预期输出:

{
            "_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
            "RESOURCE_ID" : "100-101",
            "CITY_ID" : "200-1239",
            "EVENT" : "V"
        },
        {
            "_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
            "RESOURCE_ID" : "100-101",
            "CITY_ID" : "200-1239",
            "EVENT" : "U"
        },
        {
            "_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
            "RESOURCE_ID" : "100-101",
            "CITY_ID" : "200-1239",
            "EVENT" : "D"
        },{
            "_id" : ObjectId("5ba2442e9b75ee04d429ed34"),
            "RESOURCE_ID" : "100-101",
            "CITY_ID" : "200-1239",
            "EVENT" : "I"
        }

1 个答案:

答案 0 :(得分:1)

您可以在$switch中使用$project

db.COLLECTION.aggregate([

      {
  $match: {
    $and: [{ "CITY_ID": "200-1239", "RESOURCE_ID": "100-101" }]
  }
},

{
  "$project": {
    "RESOURCE_ID": 1,
    "CITY_ID" : 1,
    "EVENT": {
      $switch: {
        branches: [
          { case: { "$eq": ["$EVENT", "1"] }, then: "I" },
          { case: { "$eq": ["$EVENT", "2"] }, then: "U" },
          { case: { "$eq": ["$EVENT", "3"] }, then: "D" },
          { case: { "$eq": ["$EVENT", "0"] }, then: "V" }
        ],
        default: "Z" //You can set default
      }
    }

    }
  } ])

参考链接:$model->isAttributeActive($this->attribute)