Android 将addSnapshotListener与WhererrayContains Firebase一起使用

Android 将addSnapshotListener与WhererrayContains Firebase一起使用,android,google-cloud-firestore,Android,Google Cloud Firestore,我有一个如下所示的数据库: 在“聊天”中,有一些文件的名称是由两个用户ID的组合生成的。在该文档中有一个名为“Name”的字段,该字段等于该文档名 我正在尝试将SnapshotListener添加到,如下所示: public void getRooms(EventListener<QuerySnapshot> listener) { db.collection( "Chats" ). whereArrayContains( "Name", auth.

我有一个如下所示的数据库:

在“聊天”中,有一些文件的名称是由两个用户ID的组合生成的。在该文档中有一个名为“Name”的字段,该字段等于该文档名

我正在尝试将SnapshotListener添加到,如下所示:

public void getRooms(EventListener<QuerySnapshot> listener) {
    db.collection( "Chats" ).
            whereArrayContains( "Name", auth.getUid()).addSnapshotListener( listener );

}
public void getRooms(EventListener侦听器){
db.collection(“聊天”)。
whererrayContains(“Name”,auth.getUid()).addSnapshotListener(listener);
}
我想让这段代码做的是查找字段“Name”中的所有文档,字符串包含字符串中某个地方的userID

例如,如果有一个名为:
abcdegf
的文档,并且
auth.getUid()=abo
我希望它找到该文档。 或者如果文档名为
egfabcd
我仍然希望它找到它

出于某种原因,它找不到任何文档,即使我知道有适合查询的文档

有什么是我做错了
的地方吗


谢谢

whererraycontains
操作仅对值的数组的字段有效。您的
Name
字段似乎包含一个字符串值,因此
whererraycontains
不适用于该字段

Firestore中没有检查某个字符串字段是否包含值的操作。最接近的等价物是,您可以检查某个字段是否以特定值开头

如果需要realcontains类型的操作,则必须使用另一个/附加数据库进行搜索。例如,请参阅上的Firestore文档

但是在这种情况下,为什么不简单地将UID存储在数组字段中,而不是将它们连接到单个字符串中呢