我想从 DynamoDB 的列中搜索(查询)一堆字符串。使用 Dynamoose https://github.com/dynamoose/dynamoose 但它什么也没返回。如果允许这种类型的查询或者是否有其他相同的语法,你能帮忙吗?
代码示例
Cat.query({"breed": {"contains": "Terrier","contains": "husky","contains": "wolf"}}).exec()
我想要所有这些品种,所以这些是 OR 查询。请帮忙。
我想从 DynamoDB 的列中搜索(查询)一堆字符串。使用 Dynamoose https://github.com/dynamoose/dynamoose 但它什么也没返回。如果允许这种类型的查询或者是否有其他相同的语法,你能帮忙吗?
代码示例
Cat.query({"breed": {"contains": "Terrier","contains": "husky","contains": "wolf"}}).exec()
我想要所有这些品种,所以这些是 OR 查询。请帮忙。
这里有两件大事。
第一的。DynamoDB 中的查询要求您搜索给定的 hasKey 等于某物的位置。这必须是表的 hashKey 或索引的 hashKey。因此,即使您可以使其正常工作,查询也会失败。因为你不能为那件事做多个等于。一定是hashKey = _______
。or
对于第一个条件或搜索,没有任何陈述或任何内容。
第二。只是为了回答你的问题。看起来您正在寻找的是condition.in
功能。基本上,这会将您的代码更改为如下所示:
Cat.query("breed").in(["Terrier", "husky", "wolf"]).exec()
当然。由于第一点,上面的代码将不起作用。
如果你真的想蛮力这个工作。您可以使用Model.scan
. 所以基本上query
在语法中改为scan`。但是,大规模的数据库扫描操作非常繁重。它会在应用过滤器之前查看每个文档/项目,然后将其返回给您。所以你没有得到你通常会得到的优化。如果您的表中只有少数或几个文档/项目,那么降低性能可能是值得的。在其他情况下,例如导出或备份数据,它也很有意义。但是,如果您能够避免扫描操作,我会的。可能需要重新考虑您的数据库结构。
Cat.scan("breed").in(["Terrier", "husky", "wolf"]).exec()
所以上面的代码可以工作,我认为这就是你所要求的,但请记住你在这里所承受的性能和成本损失。