簡體   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