Javascript Firestore-根据Firestore收集文档的内部数据对数据进行排序

Javascript Firestore-根据Firestore收集文档的内部数据对数据进行排序,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在使用Firestore开发聊天应用程序,其结构非常简单,包括组和未读消息的数量。我想先对包含未读消息的组进行排序(用户方面),然后对其他组进行排序。我正在寻找一条路,但还没有找到 这里有两种方法,我正试图遵循,以获得我想要的,但没有任何办法 通过将我的消息和每个用户的状态保存在同一个文档中 通过使用所需信息和一些查询在其他集合中保留消息_状态 群体结构- { group_name: "GROUP-NAME", group_id: "MESS

我正在使用Firestore开发聊天应用程序,其结构非常简单,包括组和未读消息的数量。我想先对包含未读消息的组进行排序(用户方面),然后对其他组进行排序。我正在寻找一条路,但还没有找到

这里有两种方法,我正试图遵循,以获得我想要的,但没有任何办法

  • 通过将我的消息和每个用户的状态保存在同一个文档中
  • 通过使用所需信息和一些查询在其他集合中保留消息_状态
  • 群体结构-

    {
         group_name: "GROUP-NAME",
         group_id: "MESSAGE-GROUP-ID",
         admin: "Anuj",
         participants: [
              1,2
         ],
         participants_status: [
              {
                  id: 1,
                  active: 1 // true (User active)
              },
              {
                  id: 2,
                  active: 0 // false (User not active)
              },
        ],
        message_status_user_wise: [
              {
                  user_id: 1, // ID of participant
                  unread_message_count: 1 
              },
              {
                  user_id: 2, // ID of participant
                  unread_message_count: 5
              }
        ]
    }
    
    {
         message: "This is test message"
         group_id: "MESSAGE-GROUP-ID",
         sender: "Anuj",
         sender_id: 1
    }
    
    消息结构-

    {
         group_name: "GROUP-NAME",
         group_id: "MESSAGE-GROUP-ID",
         admin: "Anuj",
         participants: [
              1,2
         ],
         participants_status: [
              {
                  id: 1,
                  active: 1 // true (User active)
              },
              {
                  id: 2,
                  active: 0 // false (User not active)
              },
        ],
        message_status_user_wise: [
              {
                  user_id: 1, // ID of participant
                  unread_message_count: 1 
              },
              {
                  user_id: 2, // ID of participant
                  unread_message_count: 5
              }
        ]
    }
    
    {
         message: "This is test message"
         group_id: "MESSAGE-GROUP-ID",
         sender: "Anuj",
         sender_id: 1
    }
    
    现在将有多个组和未读/已读消息。现在的问题是,我如何查询以排序和获取顶部有未读消息的组,即-任何用户的
    未读消息\u计数>0
    的组在结果中应位于顶部

    同样,我也有一些其他问题-

  • 保持相同的结构,如何获取所有组的未读邮件总数
  • 我如何才能仅获取那些具有任何
    id
    的用户处于活动状态的组
  • 我还研究了子集合,也就是说,也没有我的用处