Flutter Firestore 查询中是否可以使用通配符?

Is wildcard possible in Flutter Firestore query?

我的目标是从路径 'chat/$chattype/room/{roomID}/message' 流式传输数据库中的所有消息,我需要在其中查询所有包含文档的消息,其中的字符串中包含 'user1',而无需明确指定房间编号。似乎无法让它与通配符一起工作,但是.. 是否可以从 say: 'chat/$chattype/room/' 查询?

Widget build(BuildContext context) {
    return StreamBuilder<QuerySnapshot>(
      stream: _firestore
          .collection('chat/$chattype/room/{roomID}/message')
          .where("reciever", isEqualTo: "user1")
          .snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
...

Firestore 查询不支持任何通配符。您必须能够构建集合的完整路径才能对其进行查询。

您可能还想查看 collection group queries,它可以让您查询任何子集合中具有相同名称的所有文档。您也许可以使用“消息”上的集合组查询来查询 all 聊天室的 all 聊天类型的所有消息,应用过滤器如果需要的话。

查询多个集合的唯一方法是使用 collection group query,它查询具有给定名称的所有集合。

所以:

_firestore
      .collectionGroup('message')
      .where("reciever", isEqualTo: "user1")
      .snapshots(),

另请参阅 collectionGroup() 的 Flutter 参考文档。