我正在尝试在DynamoDB表上使用扫描操作来匹配具有给定“标记”的项目。项目的标签存储在单个集合属性中。 E.g:
machine-1: tags = "windows", "iis", "64bit" machine-2: tags = "windows", "fs"
现在,我有一个高级支持的支持案例,但需要花费一些时间。我想要做的是匹配机器,其中'tags'包含条目“windows”和“iis”。
我可以使用CONTAINS
模式匹配单个模式,并指定单个AttributeValue,例如字符串值为“windows”。
但是,CONTAINS
不支持单个AttributeValue或多个AttributeValues中的集合。它给出了一个错误。
所以我尝试IN
(AWS高级支持也建议):但是,无论我使用单个AttributeValue(甚至只是再次查找“windows”或多个),我都得到零结果。
IN
的文档很差。该操作以4个无法提供信息的词语描述,实际上:“检查完全匹配”。
虽然我等待支持可能会继续进行几轮Q& A,但是有人在阅读这个熟悉这种查询的扫描吗? (如果可以的话,请先在你的答案中测试你所说的内容:我想我已尝试过明显的答案了!)
对于参考,扫描文档:http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_Scan.html
答案 0 :(得分:10)
这来自AWS高级支持:
“你好。
我收到了Dynamo DB的确认,目前不支持此功能。对集合的CONTAINS只能使用单个值执行。 “
Urgh。所以现在我将为每个可能的标签创建一个新属性,每列中都有一个“True”或“False”,并过滤我的Scan。