Если еще, если cond в агрегации mongodb - PullRequest
0 голосов
/ 21 сентября 2018

Я знаю, что об этом уже спрашивали, но я не могу найти ответ, как добавить условие в агрегат $ project

Schedul.aggregate([
    { $match: { flag: 1 } },
    {
        $project: {
            "name": "$name",
            "day_of_week": ("$day_of_week" === 0) ? 'Sunday' : ("$day_of_week" === 1) ? 'Monday' : ("$day_of_week" === 2) ? 'Tuesday' : ("$day_of_week" === 3) ? 'Wednesday' : ("$day_of_week" === 4) ? 'Thursday' : ("$day_of_week" === 5) ? 'Friday' : 'Saturday',
        }
    },
])

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете использовать агрегацию $switch.

Schedul.aggregate([
  { "$match": { "flag": 1 }},
  { "$project": {
    "name": "$name",
    "day_of_week": {
      "$switch": {
        "branches": [
          { "case": { "$eq": ["$day_of_week", 0] }, "then": "Sunday" },
          { "case": { "$eq": ["$day_of_week", 1] }, "then": "Monday" },
          { "case": { "$eq": ["$day_of_week", 2] }, "then": "Tuesday" },
          { "case": { "$eq": ["$day_of_week", 3] }, "then": "Wednesday" },
          { "case": { "$eq": ["$day_of_week", 4] }, "then": "Thrusday" },
          { "case": { "$eq": ["$day_of_week", 5] }, "then": "Friday" }
        ],
        "default": "Saturday"
      }
    }
  }}
])
...