如何在 React Native 中使用 Firestore 数据库进行用户过滤?

How to user filter with Firestore database in React Native?

我想过滤 firestore 查询以获取所有不包含特定值的文档。

我用了@react-native-firebase

import firestore from '@react-native-firebase/firestore';

  const getUnreadDocs = async () => {
    const unreadDocs = await firestore()
      .collection('rooms')
      .doc('aDRKtxbhG9g5IfbKcsa4')
      .collection('messages')
      .where('seen', 'not-in', ['7B6jaZngXeN7V4r3eRoDBdlcj6m2'])
      .get();

    console.log(`unreadDocs`, unreadDocs);
  };

docs return 来自查询

query-return-from-docs

如何存储数据?

我们有collection

rooms Collection -> Docs -> fields
         |
         V
     messages Collection -> Docs -> fields

rooms-collection-img

messages-collection-img2

应该查询什么return? 正如我们在查询中提到的,文档不应在 seen 字段

中包含 7B6jaZngXeN7V4r3eRoDBdlcj6m2

所以,查询应该return只有一个文档,即

messages-collection-img1

in/not-in 运算符检查当前 single-value 字段的值是否 exists/does 在您指定的值列表中不存在。但是您的 seen 字段是一个数组,不适用于此运算符。

相反,您需要对其使用 array-contains 来检查值 是否存在 。没有等效的 array-does-not-contain 运算符来检查数组字段中是否不存在值。

另见:

  • Firestore get documents where value not in array?