【问题标题】:HOW TO USE CASE STATEMENT IN MONGODB WHERE CONDITION [duplicate]如何在 MONGODB WHERE 条件下使用 CASE 语句 [重复]
【发布时间】:2018-10-23 09:21:10
【问题描述】:

我是 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"
        }

我使用 MATCH CONDITION 编写了以下聚合管道 “CITY_ID”:“200-1239”和“RESOURCE_ID”:“100-101”,但是如何在“1”时更改事件,然后是“I”(或)事件,当“2”时,然后是“U”(或)事件时'3' THEN 'D' (OR) 事件当 '0' 然后 'V' 任何人请给我建议。

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"
        }

【问题讨论】:

    标签: mongodb mongoose mongodb-query


    【解决方案1】:

    你可以在$project中使用$switch

    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
          }
        }
    
        }
      } ])
    

    参考链接:https://docs.mongodb.com/manual/reference/operator/aggregation/switch/

    【讨论】:

    • 嗨 IftekharDani 我正在尝试此代码一些 trow 错误 Unexpected token ] @ IftekharDani
    • @Naresh 请检查,我已经更新了我的答案。问题只是缺少括号。
    • 谢谢@IftekharDani 但如何删除默认值
    • 你也可以使用default:"$EVENT"
    • 好的,谢谢@IftekharDani
    猜你喜欢
    • 1970-01-01
    • 2023-01-05
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2019-06-10
    • 2011-08-21
    相关资源
    最近更新 更多