我想从DynamoDB中的列中搜索(查询)一串字符串。使用Dynamoose https://github.com/dynamoose/dynamoose,但是它什么也不返回。如果允许这种类型的查询,或者是否存在相同的其他语法,您能帮上忙吗?
代码样本
Cat.query({"breed": {"contains": "Terrier","contains": "husky","contains": "wolf"}}).exec()我想要所有这些品种,所以这些是或查询。请帮帮忙。
发布于 2020-05-18 21:55:06
这里有两件大事。
第一。DynamoDB中的查询要求搜索与某物相等的给定hasKey的位置。这必须是表的hashKey或索引的hashKey。因此,即使您能够完成此任务,查询也将失败。因为你不能为那个东西做多个等价物。一定是hashKey = _______。对于第一个条件或搜索,没有or语句或任何内容。
第二。只是为了回答你的问题。您要寻找的似乎是condition.in函数。基本上,这会将您的代码更改为如下所示:
Cat.query("breed").in(["Terrier", "husky", "wolf"]).exec()当然了。由于第一点的原因,上面的代码将而不是工作。
如果你真想用暴力强迫它起作用的话。您可以使用Model.scan。因此,在语法中基本上将query改为scan` `。然而,扫描操作在DB上是非常重的。在应用筛选器之前,它会查看每个文档/项,然后将其返回给您。所以你不会得到你通常会得到的优化。如果您的表中只有几个或几个文档/项,则可能值得进行性能测试。在其他情况下,如导出或备份数据,这也是有意义的。但如果你能避免扫描操作,我会的。可能需要对您的DB结构进行重新思考。
Cat.scan("breed").in(["Terrier", "husky", "wolf"]).exec()所以上面的代码会起作用,我想这就是你想要的,但是请记住性能和成本对你的影响。
https://stackoverflow.com/questions/61875825
复制相似问题