【问题标题】:Firestore whereEqualsTo from arraylist来自arraylist的Firestore whereEqualsTo
【发布时间】:2018-06-29 15:17:37
【问题描述】:

我正在尝试列出与 ArrayList 中的字段字符串值匹配的文档。

简单地说:

  • 我有 ArrayList,其标签在运行时存储
  • 以及带有标签字段的文档

并且我想查询将标签与存储在 ArrayList 中的标签之一匹配的文档。这可以通过官方查询还是我必须下载所有文档并在客户端过滤它?感谢您的任何回答。

另外,这是我生成查询的方法:

public static Query getQueryForFollowed(DocumentSnapshot snapshots) {
    if (snapshots == null || !snapshots.exists()) {
        return FirebaseFirestore.getInstance().collection("posts").whereEqualTo("null", "null"); // return query that will get nothing
    }
    ArrayList<String> f = processFollowedTags(snapshots);
    Query query = FirebaseFirestore.getInstance()
            .collection("posts")
            .whereEqualTo("tag", f.get(0));
    for (int i = 1; i < f.size(); i++) {
        query = query.whereEqualTo("tag", f.get(i));
    }
    return query;
}

我已调试代码,查询已包含请求的条件,但查询未找到任何与其匹配的文档。

【问题讨论】:

标签: android firebase google-cloud-firestore


【解决方案1】:

试试这个

Query query = FirebaseFirestore.getInstance()
            .collection("posts")
            .whereEqualTo("tag", f.get(0)).orderBy("tag", Query.Direction.ASCENDING);;       

【讨论】:

  • com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.firestore.FirebaseFirestoreException: INVALID_ARGUMENT: Order by 子句不能包含具有相等过滤标记的字段
【解决方案2】:

在 Google 上进行更多搜索后,我发现无法查询多个值的字段。

根据:

【讨论】:

    【解决方案3】:

    下面的代码 sn-p 可能会对你有所帮助。

    fun arrayContainsQueries() {
        // [START array_contains_filter]
        val citiesRef = db.collection("cities")
        citiesRef.whereArrayContains("regions", "west_coast")
        // [END array_contains_filter]
    

    }

    参考:git

    【讨论】:

    • 抱歉,我的应用中没有使用 Kotlin
    【解决方案4】:

    截至 2019 年 11 月,这现在可以通过 in 查询来实现。

    使用 in 查询,您可以查询特定字段的多个值 (最多 10 个)在单个查询中。您可以通过传递一个包含 您要搜索的所有值,Cloud Firestore 将匹配 其字段等于这些值之一的任何文档。

    看起来像这样:

     Query query = FirebaseFirestore.getInstance()
        .collection("posts")
        .whereIn("tag", f);
    

    【讨论】:

      猜你喜欢
      • 2020-05-17
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      相关资源
      最近更新 更多