首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Dynamoose中查询包含?

如何在Dynamoose中查询包含?
EN

Stack Overflow用户
提问于 2020-05-18 17:49:54
回答 1查看 1.8K关注 0票数 0

我想从DynamoDB中的列中搜索(查询)一串字符串。使用Dynamoose https://github.com/dynamoose/dynamoose,但是它什么也不返回。如果允许这种类型的查询,或者是否存在相同的其他语法,您能帮上忙吗?

代码样本

代码语言:javascript
复制
Cat.query({"breed": {"contains": "Terrier","contains": "husky","contains": "wolf"}}).exec()

我想要所有这些品种,所以这些是或查询。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2020-05-18 21:55:06

这里有两件大事。

第一。DynamoDB中的查询要求搜索与某物相等的给定hasKey的位置。这必须是表的hashKey或索引的hashKey。因此,即使您能够完成此任务,查询也将失败。因为你不能为那个东西做多个等价物。一定是hashKey = _______。对于第一个条件或搜索,没有or语句或任何内容。

第二。只是为了回答你的问题。您要寻找的似乎是condition.in函数。基本上,这会将您的代码更改为如下所示:

代码语言:javascript
复制
Cat.query("breed").in(["Terrier", "husky", "wolf"]).exec()

当然了。由于第一点的原因,上面的代码将而不是工作。

如果你真想用暴力强迫它起作用的话。您可以使用Model.scan。因此,在语法中基本上将query改为scan` `。然而,扫描操作在DB上是非常重的。在应用筛选器之前,它会查看每个文档/项,然后将其返回给您。所以你不会得到你通常会得到的优化。如果您的表中只有几个或几个文档/项,则可能值得进行性能测试。在其他情况下,如导出或备份数据,这也是有意义的。但如果你能避免扫描操作,我会的。可能需要对您的DB结构进行重新思考。

代码语言:javascript
复制
Cat.scan("breed").in(["Terrier", "husky", "wolf"]).exec()

所以上面的代码会起作用,我想这就是你想要的,但是请记住性能和成本对你的影响。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61875825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档