繁体   English   中英

FireStore查询如何从数据库中查询到arrays

[英]FireStore query how to query arrays from the database

我正在尝试查询数据库以获取包含具有 userid 和 id 的数组的特定文档

const userChatQuery = query(collectionGroup(db, userchat), where(user, 'array-contains', [userId, id]));

我想检索包含包含这两个 id 字符串的数组的文档,无论顺序如何,但它们必须包含这两个字符串。

最好的方法是go一下吗?

使用单个查询无法实现您所描述的内容。

首先,array-contains 只接受单个值作为参数,而不是要查找的 arrays 个值。 它的目的是找到匹配文档,其中一个值是指定数组字段的一个元素。

如果您可以假设数组只能有两个值,并且这些值只能以相同的顺序出现,那么您可能能够在给定您要查找的确切数组的情况下执行简单的相等性过滤器。 只需向查询提供您要查找的确切数组。

如果您不能做出这些假设,您可以尝试两个包含数组的查询,一个用于每个 ID 字符串,然后检查两个查询的结果以找出它们重叠的地方。

但是,老实说,您最好重构数据库,根本不要使用 arrays。 如果您有具有明确目的的值,则它们根本不应该在数组中。 它们应该是您可以正常过滤的单独字段。 您正在使用 arrays 处理此数据,这对我来说似乎真的很奇怪。 您现在拥有的数据建模根本不能满足您的查询要求,这是使用 NoSQL 类型数据库时的主要问题。 使用 NoSQL,您通常会先弄清楚您希望如何查询数据,然后 model 您的数据才能满足这些要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM