mongodb: как создать вычисляемое поле, используя python (pymon go)? - PullRequest
0 голосов
/ 03 августа 2020

Есть ли способ создать вычисляемое поле в mongodb с использованием pymon go?

example = {
    "field1": 1,
    "field2": 2,
    "calculated_field": "field1" + "field2"
}

Вычисляемое поле всегда должно содержать формулу, если "field1" будет позже изменено, результат должен update.

Я прочитал документацию mongodb и вижу, что это можно сделать с конвейером агрегации, но документация pymon go не совсем ясна по этой процедуре.

Edit:

В настоящий момент я пытаюсь вставить новое поле, как показано ниже, но поле не добавляется.

    pipeline = [
    {
        "$addFields": {
            "calculated_field": {"$sum": ["field1", "field2"]}
        }
    }
]

dbCollection = database["col"]

dbCollection.aggregate(pipeline)

1 Ответ

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

У вас есть несколько разных вариантов в зависимости от ваших целей.

  1. Вы можете использовать конвейер агрегирования для вычисления суммы:

     [
         {
             '$addFields': {
                 'total': {
                     '$sum': [
                         '$field1', '$field2'
                     ]
                 }
             }
         }
     ]
    

    Результатом будет документ, в котором есть итоговое поле. Имейте в виду, что это не сохранит итоговую сумму в вашей базе данных.

      {
          field1: 5,
          field2: 3,
          total: 8,
      }
    
  2. Вы можете создать поток изменений для мониторинга field1 и field2 для проверки изменений. При внесении изменений вы можете автоматически обновлять общее количество, хранящееся в вашей базе данных. См. https://developer.mongodb.com/quickstart/python-change-streams для получения дополнительной информации о том, как создавать потоки изменений в Python.

  3. Если ваша база данных хранится в MongoDB Atlas (Полностью управляемая база данных как услуга MongoDB), вы можете использовать триггер для отслеживания изменений field1 и field2. Триггеры построены на тех же принципах, что и потоки изменений. Триггеры немного проще, поскольку вам не нужно беспокоиться о хостинге и управлении потоком изменений самостоятельно. См. https://docs.atlas.mongodb.com/triggers/ для получения дополнительной информации о триггерах.

...