2012-07-05 38 views
13

我试图在DynamoDB表上使用扫描操作来匹配给定'标签'的项目。项目的标签存储在一个集合属性中。例如:DynamoDB使用过滤器扫描,匹配'is-in-set'条件

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

现在,我有一个使用Premium Support打开的支持案例,但这需要一些时间。我想要做的是匹配“标签”包含条目“窗口”“iis”的机器。

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

但是,CONTAINS不支持单个AttributeValue或多个AttributeValues中的集合。它给出了一个错误。因此,我尝试了IN(也提出了一些AWS高级支持):但是,无论我使用单个AttributeValue(即使只是再次查找“windows”还是多个),我都会得到零结果。

IN的文档很差。操作用4个无用词来描述,实际上:“检查完全匹配”。

当我等待支持可能继续进行几轮Q & A时,是否有人阅读过这类熟悉Scan的这种查询? (如果你可以,请测试你在说什么在你的答案第一:我想我已经尝试了很明显的)

对于裁判,扫描文档:http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_Scan.html

+1

当我收到高级支持的回复(好的,好的:目前为止不好),我会在这里发布。花了很长时间,但他们现在直接与开发人员联系.. –

回答

10

这从AWS高级支持:

“你好。

我从迪纳摩DB,这是目前不支持的确认。包含针对一组只能与单个值执行。”

Urgh。因此,现在我将为每个可能的标签创建一个新属性,并在每列中添加“True”或“False”,并对其进行过滤。

+0

你可以做“标签包含窗口或标签包含iis” –