如何在C#中的Amazon Dynamo DB中为Json属性(列值)创建全局二级索引?

时间:2015-12-15 10:55:26

标签: json amazon-web-services indexing amazon amazon-dynamodb

我有一个包含列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示例DynamoDB ..

2 个答案:

答案 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元素置于列级别,然后创建索引。