获取值不在数组中的 Firestore 文档

Posted

技术标签:

【中文标题】获取值不在数组中的 Firestore 文档【英文标题】:Get Firestore document where value not in array 【发布时间】:2020-11-20 13:36:44 【问题描述】:

我知道 firestore 不允许在 .where() 查询中使用不等式语句,我应该链接 > 和

在我的 react native 应用程序中,我想选择一些尚未被用户添加的用户。在获得当前用户已经添加的所有用户的数组后:

var doc = await firebase
  .firestore()
  .collection(`users/$currentUser.uid/user_data`)
  .doc("friends")
  .get();
var friends = doc.data()

然后我想选择一些没有被当前用户添加的用户如下:

var docs = await firebase
  .firestore()
  .collection("users")
  .limit(10)
  .where("username", "not in", friends)
  .get();

我该怎么做?谢谢

【问题讨论】:

【参考方案1】:

Firestore 无法进行此类查询。 Firestore 只能查询它为每个字段创建的索引中存在的内容。对于存在的事物,无法有效地查询这些索引。

另请参阅:Firestore: how to perform a query with inequality / not equals

【讨论】:

此问题显示获取字段不等于单个字符串的文档。但我想知道如何获取字段不是任何字符串数组的文档。您如何建议这样做? 出于同样的原因不能这样做。数据类型无关紧要。列表、地图、字符串、数字、时间戳,所有这些都无法检查是否不存在。这不是索引的工作方式。

以上是关于获取值不在数组中的 Firestore 文档的主要内容,如果未能解决你的问题,请参考以下文章

从 id 数组中获取 firestore 文档列表

为啥我不能将从 Firestore 获取的值分配给 Swift 中的数组?

如何使用 SwiftUI 将值数组写入 Firestore

如何从 Firestore 集合中获取所有文档并将它们返回到数组列表中? [复制]

如何使用Kotlin从Firestore中的数组字段中获取数据?

Firestore 从文档的内部数组中获取数据