MongoDB: можно ли использовать оператор $ cond в запросе на обновление? - PullRequest
0 голосов
/ 06 августа 2020

Цель, которую я пытаюсь достичь:

Обновить значение в MongoDB на основе его текущего значения.

После поиска в Google я обнаружил, что оператор $cond потенциально позволяет мне решить проблема, поэтому я написал следующий запрос:

db.getCollection('product').update({_id: ObjectId("77b2a57556a5e634d57d9977")}, 
{"$set": {"availability" : 
   {$cond: [ { "$availability": { $eq: true } }, "Yes", "No" ] }}});

, но по какой-то причине он не работает, и MongoDB выдает исключение.

Итак, не могли бы вы посоветовать: Is Технически правильный ли подход использовать $cond в запросе на обновление? Если да, то почему запрос не работает, мне кажется, он семантически подходит,

или, возможно, какие-то другие варианты решения проблемы доступны, пожалуйста, предложите.

1 Ответ

1 голос
/ 07 августа 2020

Похоже, вы пытаетесь использовать Обновление с конвейером агрегирования , которое поддерживается в MongoDB >=4.2. А также, если ваша версия БД >=4.2, правильный синтаксис будет

db.getCollection("product").update(
  { _id: ObjectId("77b2a57556a5e634d57d9977") },
  [
    {
      $set: {
        availability: {
          $cond: [
            {
              $eq: ["$availability", true],
            },
            "Yes",
            "No",
          ],
        },
      },
    }
  ]
);
...