我有以下情况,类似于这个 DynamoDB 表定义:
{
"TableName": "Table",
"KeySchema": [
{
"AttributeName": "Id",
"KeyType": "HASH"
},
{
"AttributeName": "CompoundSortKey",
"KeyType": "RANGE"
}
],
"AttributeDefinitions": [
{
"AttributeName": "Id",
"AttributeType": "S"
},
{
"AttributeName": "CompoundSortKey",
"AttributeType": "S"
},
{
"AttributeName": "AttributeId1",
"AttributeType": "S"
},
{
"AttributeName": "AttributeId2",
"AttributeType": "S"
}
],
"LocalSecondaryIndexes": [
{
"IndexName": "Id-AttributeId1-index",
"KeySchema": [
{
"AttributeName": "Id",
"KeyType": "HASH"
},
{
"AttributeName": "AttributeId1",
"KeyType": "RANGE"
}
],
"Projection": {
"ProjectionType": "ALL"
}
},
{
"IndexName": "Id-AttributeId2-index",
"KeySchema": [
{
"AttributeName": "Id",
"KeyType": "HASH"
},
{
"AttributeName": "AttributeId2",
"KeyType": "RANGE"
}
],
"Projection": {
"ProjectionType": "ALL"
}
}
],
"ProvisionedThroughput": {
"ReadCapacityUnits": 5,
"WriteCapacityUnits": 5
}
}
除了定义的属性之外的每条记录都包含附加属性、具有少量属性的地图类型。
目前,我面临一种情况,我需要根据此映射中的一个属性检索记录,该属性是列表类型(准确地说,我需要查找在此列表中具有某些值的记录)。
我需要一个如何解决这个问题的建议,到目前为止,我已经阅读了有关全局二级索引的信息,但我不确定我的情况是否适用于它们,因为我需要基于列表类型进行过滤的属性。
我正在使用 C# 语言来获取记录,但我的问题很可能需要更改表定义。可能值得一提的是,我试图避免全表扫描操作。
更新:
该列表内的数据可以理解为“标签”。这意味着该表中的多个文档可能具有相同的标签。
我有一种情况,我必须过滤掉所有具有此特定标签的文档作为此列表中的元素之一