基于Firestore-android的HashMap过滤(查询)文档

基于Firestore-android的HashMap过滤(查询)文档,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我正在尝试筛选并获取写入Firestore的文档。所以我的收藏里面还有一个HashMap 文件1 文档2 现在,我需要过滤所有userID1(在附加的图像中高删除),其中等于true 我尝试了下面的代码,但似乎不起作用 // Construct query basic query mQuery = mFirestore.collection(fsCollection) .orderBy("timestamp", Query.Direction.DESCENDING)

我正在尝试筛选并获取写入Firestore的文档。所以我的收藏里面还有一个HashMap

文件1

文档2

现在,我需要过滤所有userID1(在附加的图像中高删除),其中等于true

我尝试了下面的代码,但似乎不起作用

// Construct query basic query
mQuery = mFirestore.collection(fsCollection)
        .orderBy("timestamp", Query.Direction.DESCENDING)
        .whereEqualTo(getUid(), true)
        .limit(LIMIT);

您需要更改这行代码:

mQuery = mFirestore.collection(fsCollection)
            .orderBy("timestamp", Query.Direction.DESCENDING)
            .whereEqualTo(getUid(), true)
            .limit(LIMIT);


由于在同一查询中使用的是
orderBy
whereEqualTo
方法,因此需要创建索引。在启动应用程序的那一刻,您将在logcat中看到一个
url
。单击该url以创建所需的索引。

非常感谢Alex先生,如果它有效,我不需要将数据复制到每个用户,但投票可以写为以下字符串。whereEqualTo(“投票/”+getUid(),true),在尝试之前只需确认。谢谢…….whereEqualTo(“投票”+getUid(),true)。不要使用斜杠。它能工作吗?是的,它能工作了再次感谢你Alex,但是在创建索引后,它会显示索引中的当前Uid(vots.GBJN9gPzNzO timestamp enabled),然后对于每个用户,它会在Logcat中提醒我创建索引,所以需要索引?很高兴听到它能工作!使用当前的数据库结构,是的,您需要为每个用户创建一个索引。如果你认为我的答案帮助你过滤(查询)问题,请考虑通过点击投票箭头左侧的复选标记来接受我的答案。应该把颜色改成绿色。谢谢好的,就这么多了。。如果我没有创建索引,但是它显示数据呢
// Construct query basic query
mQuery = mFirestore.collection(fsCollection)
        .orderBy("timestamp", Query.Direction.DESCENDING)
        .whereEqualTo(getUid(), true)
        .limit(LIMIT);
mQuery = mFirestore.collection(fsCollection)
            .orderBy("timestamp", Query.Direction.DESCENDING)
            .whereEqualTo(getUid(), true)
            .limit(LIMIT);
mQuery = mFirestore.collection(fsCollection)
            .orderBy("timestamp", Query.Direction.DESCENDING)
            .whereEqualTo("votes." + getUid(), true) //Use the name of the HashMap
            .limit(LIMIT);