Python Dynamodb-查询列表是否包含

Python Dynamodb-查询列表是否包含,python,amazon-web-services,amazon-dynamodb,boto3,nosql,Python,Amazon Web Services,Amazon Dynamodb,Boto3,Nosql,我对NoSQL相当陌生。使用Python/Boto,但这是一个相当普遍的问题。目前正在尝试将一个项目从MongoDB切换到DynamoDB,并就DynamoDB及其查询列表是否包含特定字符串的能力寻求一些建议。我已经搜索了大约一天,但我开始担心它没有这个功能,除了使用扫描,这是非常缓慢的考虑到数据库将被查询数千次更新。类似的问题没有得到回答 我知道主键只能是N、S或B,而不是像字符串集(SS)那样有用的东西 数据相当简单,看起来像这样。我正在寻找一种最有效的方法,根据标签属性查询数据库中包含“s

我对NoSQL相当陌生。使用Python/Boto,但这是一个相当普遍的问题。目前正在尝试将一个项目从MongoDB切换到DynamoDB,并就DynamoDB及其查询列表是否包含特定字符串的能力寻求一些建议。我已经搜索了大约一天,但我开始担心它没有这个功能,除了使用扫描,这是非常缓慢的考虑到数据库将被查询数千次更新。类似的问题没有得到回答

我知道主键只能是N、S或B,而不是像字符串集(SS)那样有用的东西

数据相当简单,看起来像这样。我正在寻找一种最有效的方法,根据标签属性查询数据库中包含“string1”或“string2”的条目。同样,我不想使用SCAN,但是如果在DyDoDB中有一个最佳的实践,我愿意考虑数据结构的规范化。
{
   id: <some number used as a primary key>,
   tags: ['string1', 'string2'...],
   data: {some JSON object}
}
{
id:,
标签:['string1','string2'…],
数据:{some JSON object}
}

从我所读到的内容来看,即使使用全局二级索引,这似乎也不可能,这很奇怪,因为这将使dynamodb只对最简单的查询有用。希望我遗漏了什么。

在MongoDB中,您有多键索引,但在DynamoDB中没有


我认为您需要像在关系数据库中一样解决它:创建一个多对多关系表,使用标记作为哈希键,条目id作为排序键。并找到一些方法使关系表与条目表保持同步。

您是说您只有标记数据来查询数据,而没有分区键吗?id键将是分区键,并且只是某种自动增量。我相信Dynamodb只允许两个主键,一个散列键和一个范围键(这是可选的)。我可以包含一个辅助字符串键,但除非它可以是一个列表或集合,其中包含可变数量的标记,否则它对查询将没有用处。就上下文而言,JSON对象是社交媒体更新的集合,标记是与之相关的关键字。我明白了,这稍微违背了使用NoSQL数据库的目的。可悲的是,我决定回到Mongo。不能在文档项上存储索引是一个太多的限制。