Агрегация Mongodb 3.4 - PullRequest
       0

Агрегация Mongodb 3.4

0 голосов
/ 27 марта 2020

У меня есть такая коллекция документов. И я хочу изменить значение внутри поддокумента

{ "cities" :[
        {
            "city" : "London", 
            "country" : "United Kingdom"
        }, 
        {
            "city" : "New York", 
            "country" : "United States"
        }
        {
            "city" : "San Francisco", 
            "country" : "United States"
        }]
}

Если город San Francisco, то Sf Если город New york, то Нью-Йорк Еще null

Я использовал $switch, но не работает. Я использую MongoDB v3.4.

1 Ответ

0 голосов
/ 27 марта 2020

Попробуйте это:

db.collection.aggregate([
  {
    $project: {
      cities: {
        $map: {
          input: "$cities",
          in: {
            country: "$$this.country",
            city: {
              $switch: {
                branches: [
                  {
                    case: {
                      $eq: [ "$$this.city","San Francisco"]
                    },
                    then: "Sf"
                  },
                  {
                    case: {
                      $eq: [ "$$this.city", "New York" ]
                    },
                    then: "NY"
                  }
                ],
                default: null
              }
            }
          }
        }
      }
    }
  }
  //Uncomment this stage if aggregation result meets your requirements
  //,{$out: "collection"}
])

MongoPlayground

...