javascript - Firestore 搜索数组包含多个值的任意值
问题描述
如果我有这样的收藏:
Logos:
Logo1:
colors: ["red","black"]
shapes: ["square","circle"]
Logo2:
colors: ["red","yellow"]
shapes: ["square"]
如果我想搜索红色或黑色的徽标,我会执行以下操作:
db.collection("Logos").where("colors", "array-contains-any", ["red", "black"]).get().then((querySnapshot) => {
//do stuff
})
这将使我得到我收藏中包含红色或黑色的所有徽标。但是,我如何能够搜索(red OR black) AND (circle OR square)
但我无法组合多个array-contains-any
运算符的徽标。
这在 Cloud Firestore 中是否可行?如果没有,还有其他方法可以做到这一点吗?
解决方案
从 Firestore 文档中:
每个查询最多可以使用一个
in
,not-in
, orarray-contains-any
子句。您不能在同一查询中组合in,
not-in array-contains-any`。, and
解决方法是将您要检查的值组合到一个数组中,但我认为这不会在这里起作用,因为您随后会在该数组上寻找组合AND
和OR
条件。
因此,唯一的选择似乎是直接在数据库上执行一个条件,然后在您的应用程序代码中进行其余的过滤。
推荐阅读
- css - css边框角覆盖
- android - 如何以编程方式将社交媒体帖子作为图像保存到图库
- azure - 无法在 Azure APIM 中保存策略
- java - 我的 spring-app 没有收到我的 GET
- amazon-web-services - 具有 Alexa 技能的 AVS
- php - 带有面包屑的 Laravel 刀片模板
- angular - Angular 2+ - 将 HTML 内容注入 Bootstrap 模式中的组件
- c - 未定义对“check_nan”的引用
- mysql - SQOOP QUERY:连接到远程服务器 MySQL 时出现问题
- python - 熊猫:如何按一列的日期对数据框行进行排序