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

时间:2018-01-09 17:43:37

标签: android firebase google-cloud-firestore

我正在尝试过滤并获取写入Firestore的文档。所以我的内容我还有一个HashMap

  

DOC1

//.....

"votes": [
{
  "userID1": true,
  "userID2": true,
}],

//.....
  

DOC2

//.....

"votes": [
{
  "userID1": true,
  "userID2": true,
}],

//......

Please check here my Firestore snapshot for better understanding

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

我尝试了以下代码似乎无法正常工作

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

1 个答案:

答案 0 :(得分:0)

您需要更改以下代码行:

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);

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