Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services DynamoDB在映射或列表类型上创建索引_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

Amazon web services DynamoDB在映射或列表类型上创建索引

Amazon web services DynamoDB在映射或列表类型上创建索引,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我试图在DynamoDB中为map对象内部的属性添加索引,但似乎找不到这样做的方法。这是受支持的还是只允许在标量值上使用索引?关于这一点的文档似乎非常稀少。我希望索引功能类似于MongoDB,但到目前为止,我使用点语法引用属性来索引的方法还没有成功。非常感谢您提供的任何帮助或其他信息。索引只能建立在顶级JSON属性上。此外,范围键必须是DynamoDB中的标量值(字符串、数字、二进制或布尔值之一) 发件人: 问:在DynamoDB中查询JSON数据有什么不同吗 不可以。您可以创建全局辅助索引或本

我试图在DynamoDB中为map对象内部的属性添加索引,但似乎找不到这样做的方法。这是受支持的还是只允许在标量值上使用索引?关于这一点的文档似乎非常稀少。我希望索引功能类似于MongoDB,但到目前为止,我使用点语法引用属性来索引的方法还没有成功。非常感谢您提供的任何帮助或其他信息。

索引只能建立在顶级JSON属性上。此外,范围键必须是DynamoDB中的标量值(字符串、数字、二进制或布尔值之一)

发件人:

问:在DynamoDB中查询JSON数据有什么不同吗

不可以。您可以创建全局辅助索引或本地辅助索引 在任何顶级JSON元素上。例如,假设您存储了一个JSON 包含以下个人信息的文档: 名字、姓氏、邮政编码和他们所有朋友的名单。 名字、姓氏和邮政编码将是顶级JSON元素。 您可以创建一个索引,以便根据名字、姓氏进行查询 姓名或邮政编码。好友列表不是顶级元素, 因此,您无法为好友列表编制索引。更多信息 关于全局辅助索引及其查询功能,请参见 本常见问题解答中的辅助索引部分

Q:哪些数据类型可以被索引

所有标量数据类型(数字、字符串、二进制和布尔)都可以 用于本地辅助索引键的范围键元素。设置 列表和映射类型不能被索引

我尝试过在单独存储对象的同时进行散列(str(object))。这个散列给我一个整数(数字),我可以对它使用二级索引,使用哈希函数非常重要,该函数每次为值生成相同的哈希键。所以我用的是sha1

# Generate a small integer hash:
import hashlib
def hash_8_digits(source):
    return int(hashlib.sha1(source.encode()).hexdigest(), 16) % (10 ** 8)

这样做的目的是在保持实体完好无损的同时保持整个对象较小。i、 e.我不是将对象序列化并存储为字符串,而是将对象的整个使用方式进行更改,而是将较小的哈希值与实际列表或映射一起存储。

因此,如果映射属性非常大,有效地查询它的正确方法是什么?我试图在json元素上创建二级索引,但不知何故无法使用控制台和程序来查询相同的索引。您可以分享一个示例,演示如何在json元素上创建索引并从中检索数据。