Условие Монгодба с $ or и $ eq - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь использовать это условие, чтобы установить приоритет для поля user_id (с приоритетом для идентификаторов, для которых я хочу быть приоритетом)

$cond: {
      if: {
        $or: {
          $eq: [
            "$user_id",
            ObjectId('5e9619084ad04327e4295b2c')
          ],
          $eq: [
            "$user_id",
            ObjectId('5e9618f04ad04327e4295b27')
          ]
        }
      },
      then: 1,
      else: -1
    }
}

, но оно дает мне приоритет только 1 если идентификатор пользователя: 5e9618f04ad04327e4295b27 (второй в $ или условии.

в чем проблема?

1 Ответ

1 голос
/ 15 апреля 2020

У вас есть синтаксическая ошибка. $ или ожидает массив условий при передаче одного объекта, и поэтому применяется только последнее условие, попробуйте:

{
    $cond: {
        if: {
            $or: [ 
                { $eq: ["$user_id", ObjectId('5e9619084ad04327e4295b2c') ] }, 
                { $eq: ["$user_id", ObjectId('5e9618f04ad04327e4295b27') ] }, 
            ]
        },
        then: 1,
        else: -1
    }
}

, вы также можете упростить свой код и использовать $ in :

{
    $cond: {
        if: { $in: [ "$user_id", [ObjectId('5e9619084ad04327e4295b2c'), ObjectId('5e9618f04ad04327e4295b27')] ] },
        then: 1,
        else: -1
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...