Как сопоставить триггер на определенном поле в стежке mongodb? - PullRequest
0 голосов
/ 18 июня 2019

Выражение $ match в приложении stitch mongodb не работает должным образом.

Я пытаюсь настроить простой триггер обновления, который будет работать только с одним полем в коллекции.

Настройка триггера обеспечивает агрегацию $ match, которая кажется достаточно простой для настройки.

Например, если я хочу, чтобы триггер срабатывал только тогда, когда поле "онлайн" в указанной коллекции установлено на "true", я бы сделал:

{"updateDescription.updatedFields":{"online":"true"}}

, что для триггера стежка такое же, как:

{$match:{{updateDescription.updatedFields:{online:"true"}}}

Проблема заключается в том, когда я пытаюсь сопоставитьобновить поле, являющееся объектом. (например, hours:{online:40,offline:120}

По какой-то причине $ существует или $ in не работает. Таким образом:

{"updateDescription.updatedFields":{"hours":{"$exists":true}}

не работает, и не делает что-то вроде:

{"updateDescription.updatedFields":{"hours.online":{"$exists":true}}

Предполагается, что триггер $ match для триггера работает точно так же, как обычный $ mongo-матч. Они просто предоставляют один пример:

{
  "updateDescription.updatedFields": {
    "status": "blocked"
  }
}

Пример отсюда: https://docs.mongodb.com/stitch/triggers/database-triggers/

Я испробовал 100 вариантовно я не могу его получить

Триггер работает нормально, если совпадение имеет определенное значение, например:

{"updateDescription.updatedFields":{"hours.online":{"$numberInt\":"20"}}

, а затем я устанавливаючасов.онлайн до 20 в базе данных.

...