【问题标题】:Firestore: use "array-contains" query while ignoring specific Object attributeFirestore:在忽略特定对象属性的同时使用“数组包含”查询
【发布时间】:2021-08-11 17:24:14
【问题描述】:
我有一个集合,其中每个文档都有一个字段,该字段是一个数组并包含对象,其中每个对象都类似于{key: 0, value: "Some Value"}。除了忽略key 属性外,是否可以选择进行类似array-contains 的比较?喜欢查找所有包含数组的文档,其中包含一个其 Value 属性等于某个值的对象?
谢谢
【问题讨论】:
标签:
javascript
firebase
google-cloud-firestore
【解决方案1】:
array-contains 操作搜索完全匹配。它不能只检查数组中信息的一个子集。
常见的解决方法是更改您的数据模型以允许用例,这里通过添加另一个仅包含您可用信息的数组。例如,如果您有一个包含每个用户的一些个人资料信息的数组,但还希望能够仅查询他们的用户名,那么您最终会得到两个数组字段:
users: [
{ name: "AstroPrussia", url: "https://stackoverflow.com/users/5460401" },
{ name: "puf", url: "https://stackoverflow.com/users/209103" }
],
usernames: [
"AstroPrussia",
"puf"
]
现在,如果您想搜索整个个人资料,您可以在 users 字段上执行 array-contains。但如果您只有用户名,您将在 usernames 字段上执行 array-contains。