Как эффективно запросить вложенные атрибуты в Dynamodb?
У меня есть структура документа, как показано ниже, которая позволяет мне сохранять связанную информацию в самом документе (а не ссылаться на него).
Имеет смысл хранить вложенные в курс семинары, так как они, вероятно, будут запрашиваться вместе с курсом (все они специфичны для курса, т. Е. Курс имеет много семинаров, а семинар принадлежит курсу).
В CouchDB, с которой я перехожу, я мог бы написать View, который бы проецировал некоторые вложенные атрибуты для запросов.Я понимаю, что не могу спроецировать что-либо, что не является атрибутом верхнего уровня, во вторичный индекс DynamodB, поэтому этот подход, похоже, не работает.
Это возвращает меня к вопросу: как можноЯ эффективно запрашиваю вложенные атрибуты без сканирования, если я не могу использовать их в качестве ключей в индексе?
Например, если я хочу получить среднюю посещаемость в театре Нельсона Манделы, как я могу запросить значенияregistrations
и attendees
на всех семинарах, где есть «Театр Нельсона Манделы», не прибегая к сканированию?
{
“course_id”: “ABC-1234567”,
“course_name”: “Statistics 101”,
“tutors”: [“Cognito-sub-1”, “Cognito-sub-2”],
“seminars”: [
{
“seminar_id”: “XXXYYY-12345”,
“epoch_time”: “123456789”,
“duration”: “5400”,
“location”: “Nelson Mandela Theatre”,
“name”: “How to lie with statistics”,
“registrations”: “92”,
“attendees”: “61”
},
{
“seminar_id”: “BBBCCC-44444”,
“epoch_time”: “155555555”,
“duration”: “5400”,
“location”: “Nelson Mandela Theatre”,
“name”: “Statistical significance for dog owners”,
“registrations”: “244”,
“attendees”: “240”
},
{
“seminar_id”: “XXXAAA-54321”,
“epoch_time”: “223456789”,
“duration”: “4000”,
“location”: “Starbucks”,
“name”: “Is feral cat population growth a leading indicator for the S&P 500?”,
“registrations”: “40”
}
]
}
{
“course_id”: “CJX-5553389”,
“course_name”: “Cat Health 101”,
“tutors”: [“Cognito-sub-4”, “Cognito-sub-9”],
“seminars”: [
{
“seminar_id”: “TTRHJK-43278”,
“epoch_time”: “123456789”,
“duration”: “5400”,
“location”: “Catwoman Hall”,
“name”: “Emotional support octopi for cats”,
“registrations”: “88”,
“attendees”: “87”
},
{
“seminar_id”: “BBBCCC-44444”,
“epoch_time”: “123666789”,
“duration”: “5400”,
“location”: “Nelson Mandela Theatre”,
“name”: “Statistical significance for cat owners”,
“registrations”: “44”,
“attendees”: “44”
}
]
}