使用过滤器进行DynamoDB扫描,匹配“is-in-set”条件

14

我试图在DynamoDB表上使用Scan操作,匹配具有给定“标签”的项目。该项的标记存储在单个集合属性中。例如:

machine-1:tags =“windows”,“iis”,“64bit”
machine-2:tags =“windows”,“fs”

现在,我已经向高级支持开了一个支持案例,但需要一些时间。我想要做的是匹配“标签”包含条目“windows”“iis”的机器。

我可以使用CONTAINS 模式来匹配单个机器,并指定字符串值为“windows”的单个AttributeValue,例如。

然而,CONTAINS 不支持单个AttributeValue中的集合或多个AttributeValue。 它会产生错误。

因此,我尝试使用IN (AWS高级支持也建议这样做):但是,无论我使用单个AttributeValue(即使再次查找“windows”)还是多个AttributeValue,都会得到零结果。

IN 的文档非常差。实际上,操作用4个不知所云的单词进行描述:“检查精确匹配”。

当我等待支持可能继续进行几轮问答时,是否有人阅读此内容熟悉此类Scan查询?(如果可以,请先在回答中测试您要说的内容:我认为我已经尝试了明显的方法!)

参考文献,Scan文档:http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_Scan.html


1
当我收到来自高级支持的回复(好的回复:到目前为止还没有好的回复)时,我会在这里发布它。虽然需要很长时间,但他们现在正在直接联系开发人员。 - Kieren Johnstone
1个回答

11

这是来自 AWS 优质支持的回复:

"你好。

我从 Dynamo DB 中得到了确认,目前不支持针对集合执行包含(CONTAINS)操作。只能使用单个值执行此操作。"

唉。现在我将为每个可能的标签创建一个新属性,在每个列中放置“True”或“False”,并根据该属性筛选我的扫描结果。


你可以这样做:"tags 包含 windows 或 tags 包含 iis"。 - gitesh.tyagi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接