У меня есть коллекция с именем Events в моей базе данных MongoDB, где я храню любое событие, которое хочет сохранить пользователь. Каждое событие имеет по умолчанию id , отметку времени и пользовательское имя .
Но событие может также иметь дополнительную информацию, которая также определяется пользователем.
Например, менеджер фабрики хочет вести учет, когда кто-то нажимает кнопку на машине. Он хочет сохранить цвет кнопки и имя человека (предположим, он может легко получить эти данные). Поэтому он хочет сохранить событие, которое имеет ключи color и ключ person . Но он также может захотеть сохранить событие каждый раз, когда кто-то использует интерком на заводе. В этом случае дополнительная информация будет, например, person , intercomId и message .
С mon goose это выглядит довольно трудно определить неизвестные / Dynami c ключи в схеме.
Я не совсем уверен, каким образом я должен определить свою схему событий, хотя я думал о нескольких вариантах:
Опция A
Сохранение информации о событии по умолчанию и дополнительной информации на том же уровне.
{
id: 'f8c8e56d-3f11-408e-aeed-3f2fc0f2b833',
timestamp: 1585065263000,
name: 'ButtonClick',
// Additional information
person: 'Bob',
color: 'red'
}
Опция B
Вложение дополнительной информации о событии.
{
id: 'f8c8e56d-3f11-408e-aeed-3f2fc0f2b833',
timestamp: 1585065263000,
name: 'ButtonClick',
// Additional information
infos: {
person: 'Bob',
color: 'red'
}
}
Опция C
Вложить дополнительную информацию о событии, но с другой структурой (шаблон атрибута MongoDB), чтобы ключи, представляющие дополнительную информацию, легче индексировались
{
id: 'f8c8e56d-3f11-408e-aeed-3f2fc0f2b833',
timestamp: 1585065263000,
name: 'ButtonClick',
// Additional information
infos: [{
name: 'person',
value: 'Bob'
},{
name: 'color',
value: 'red'
}]
}
Делать у вас есть какие-либо указатели или что-то, что я должен принимать во внимание, чтобы решить, как лучше для меня go?
Спасибо,