繁体   English   中英

如何过滤 DynamoDB 中的列表值

[英]How to filter list value in DynamoDB

我目前是 AWS DynamoDB 和 noSql 的新手。我在这里迷失了 DynamoDB 中的过滤列表值。

假设我在这张表中有 2 个项目。

[
  {
    "id": 1,
    "title": "Robots in Music"
    "topics": ["Robots", "Violin"]
  },
  {
    "id": 2,
    "title": "Where are good places to see stars"
    "topics": ["Robots", "Stars"]
  },
]

我想使用主题列进行过滤。

前任。

  1. 用户希望获得主题具有“机器人”的项目。

  2. 用户获取 ID 为 1 和 2 的项目

  3. 用户想要获得主题具有“星星”的项目。

  4. 然后用户获得 id 为 2 的项目。

我尝试搜索 inte.net,发现我可以使用“QueryFilter”“包含”。 但是,我知道“包含”正在扫描所有表,对于 DynamoDB,他们可以在单个查询中提取 1MB 的数据。 这意味着需要重复该操作,并且比使用单个索引的成本要高得多。

有什么方法可以使用 GSI 并有效地过滤列表吗?

不幸的是,您无法索引列表类型或任何其他类型的嵌套属性,并且您的用例将要求您Scan整个表以了解哪些用户包含特定主题。

  1. 需要Scan
  2. A GetItem如果用户只想要 id1 或者用户想要 id1 和 id2 那么BatchGetItem
  3. 与 1 相同
  4. GetItem

您的用例需要搜索嵌套属性,然后您可以考虑使用关系数据库或更灵活的东西,如 OpenSearch。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM