我有一个包含列Id和JSON列的表。
UserProfile profile = db.UserProfiles.Where(
u => u.UserName.Equals(model.UserName)
).SingleOrDefault();
我能够在列Id上创建GSI(全局二级索引),但我想知道如何在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"}
和person_id
上创建GSI。是否可以为json属性创建GSI?在观察时,我能够在Dynamo DB表中的列上创建GSI。请提供C#.Net示例 ..
答案 0 :(得分:3)
取自http://aws.amazon.com/dynamodb/faqs/
问:在DynamoDB中查询JSON数据有什么不同吗?
没有。您可以创建全局二级索引或本地二级索引 在任何顶级JSON元素上。例如,假设您存储了一个JSON 包含有关某人的以下信息的文档: 名字,姓氏,邮政编码,以及他们所有朋友的名单。 名字,姓氏和邮政编码将是顶级JSON元素。 您可以创建一个索引,以便您根据名字,姓氏进行查询 名称或邮政编码。朋友列表不是顶级元素, 因此,您无法索引朋友列表。欲获得更多信息 有关全局二级索引及其查询功能,请参阅 本FAQ中的二级索引部分。
问:如果我在DynamoDB中嵌套了JSON数据,我是否只能检索一个 该数据的具体要素是什么?
是。当您使用GetItem,BatchGetItem,Query或Scan API时 可以定义ProjectionExpression以确定应该使用哪些属性 从表中检索。这些属性可以包括标量, 集合或JSON文档的元素。
虽然我没有设法做到这一点,或者看到任何关于云形成的例子。
答案 1 :(得分:1)
您可以在任何顶级JSON元素上创建GSI或LSI。因此,您必须将json元素置于列级别,然后创建索引。