我有一个列ID和JSON列的表。
Id | JSON
----------------------------------------------------------------
101 | {"person_id":456,"f_name":"t", "l_name":"Jack"}
|
102 | {"person_id":123,"f_name":"M", "l_name":"Ron"}
|
103 | {"person_id":789,"f_name":"A", "l_name":"Tom"}
我可以在列Id上创建GSI(全局辅助索引),但我想知道如何在person_id
和f_name
上创建GSI。是否可以为json属性创建GSI?根据观察,我可以在Dynamo DB表中的列上创建GSI。请提供一个C#.Net示例。
.
2条答案
按热度按时间x4shl7ld1#
取自http://aws.amazon.com/dynamodb/faqs/
问:在DynamoDB中查询JSON数据有什么不同吗?
不可以。您可以在任何顶级JSON元素上创建全局辅助索引或本地辅助索引。例如,假设您存储了一个JSON文档,其中包含有关某个人的以下信息:名字、姓氏、邮政编码以及他们所有朋友的列表。名字、姓氏和邮政编码是顶级JSON元素。您可以创建索引,以便根据名字、姓氏或邮政编码进行查询。朋友列表不是顶级元素,因此无法对朋友列表编制索引。有关全局辅助索引及其查询功能的详细信息,请参阅请参阅本FAQ中的辅助索引部分。
问:如果我在DynamoDB中嵌套了JSON数据,我可以只检索该数据的特定元素吗?
可以。使用GetItem、BatchGetItem、Query或Scan API时,可以定义ProjectionExpression来确定应从表中检索哪些属性。这些属性可以包括JSON文档的标量、集或元素。
虽然我还没有成功地做到这一点,或看到任何例子,它正在与云的形成。
4si2a6ki2#
您可以在任何顶级JSON元素上创建GSI或LSI,因此您必须将json元素放到列级别,然后创建索引。