Я только начал с DynamoDB. У меня есть опыт работы в MongoDB и реляционных базах данных, и я структурирую JSON больше как структуру графа, чем как плоскую структуру. Например,
[
{
"id": "1",
"title": "Castle on the hill",
"lyrics": "when i was six years old I broke my leg",
"artists": [
{
"name": "Ed Sheeran",
"sex": "male"
}
]
}
]
Например, если мне нравится искать предмет по «Эд Ширан». Самое близкое, что у меня есть, это, и это даже не соответствует ни одному значению.
var request = new ScanRequest
{
TableName = "Table",
ProjectionExpression = "Id, Title, Artists",
ExpressionAttributeValues = new Dictionary<string,AttributeValue>
{
{ ":artist", new AttributeValue { M = new Dictionary<string, AttributeValue>
{
{ "Name", new AttributeValue { S = "Ed Sheeran" }}
}
}
}
},
ExpressionAttributeNames = new Dictionary<string, string>
{
{ "#artist", "Artists" },
},
FilterExpression = "#artist = :artist",
};
var result = await client.ScanAsync(request);
В большинстве примеров и обучающих программ, которые я наблюдал до сих пор, они рассматривали Dynamodb как таблицу в обычной реляционной базе данных с очень плоский дизайн Я делаю неправильно, чтобы структурировать JSON, как указано выше? Должны ли художники быть в отдельной таблице?
И если это возможно, как выполнить поиск по некоторому значению в сложном типе, как в приведенном выше примере?