Dynami c view - MongoDb - PullRequest
       32

Dynami c view - MongoDb

0 голосов
/ 06 апреля 2020

Я пытаюсь реализовать Event Sourcing, используя MongoDB, у меня есть коллекция, скажем, Project с примерно 10 атрибутами, ProjectId в качестве ключевого атрибута, первоначально, когда документы создаются, все 10 атрибутов проекта вместе с идентификатором проекта вставляются в коллекцию вместе с отметкой времени , Для обновления я вставляю другую запись с тем же проектом в коллекцию с отметкой времени, только с обновленными полями. Я хочу создать представление, которое предоставит моментальный снимок данных проекта в определенный момент времени. Я могу создать вид как здесь

db.createView('projectview', 'project', [
  {
    "$sort": { "Date": 1 }
  },
  {
    "$group": {
      "_id": "$ProjectID",
      "TimeStamp":{"$max": "$TimeStamp"},
      "Attribute1": {
        "$mergeObjects": "$Attribute1"
      },
      "Attribute2": {
        "$mergeObjects": "$Attribute2"
      },
      "Attribute3": {
        "$mergeObjects": "$Attribute3"
      },
      "Attribute4": {
        "$mergeObjects": "$Attribute4"
      }
    }
  }  
])

Этот вид всегда будет предоставлять последний снимок. Я хочу создать представление с динамическим фильтром c, чтобы данный фильтр критериев фильтра фактически применялся к базовой коллекции перед выполнением конвейера агрегации.

db.getCollection('projectview').find(
{
  "_id": "P1",
  "date": {
    "$lt": "2020-02-02"
  }
})

для этого случая базовая коллекция должна сначала фильтроваться для ProjectId 1 и отметки времени меньше.

Запросить помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...