In Firestore, how can you do a compound query involving a key in a map without creating an index for every key?

前端 未结 4 1976
旧时难觅i
旧时难觅i 2021-02-01 16:26

In Firestore, how can you do a compound query involving a key in a map without creating an index for every key?

For example, consider a collection which holds blog posts

4条回答
  •  南旧
    南旧 (楼主)
    2021-02-01 17:11

    As far as I know Firestore should auto-generate those indexes. From the documentation page on arrays, lists, and sets:

    Consider this alternative data structure, where each category is the key in a map and all values are true:

    // Sample document in the 'posts' collection
    {
        title: "My great post",
        categories: {
            "technology": true,
            "opinion": true,
            "cats": true
        }
    }
    

    Now it's easy to query for all blog posts within a single category:

    // Find all documents in the 'posts' collection that are
    // in the 'cats' category.
    db.collection('posts')
        .where('categories.cats', '==', true)
        .get()
        .then(() => {
            // ...
        });
    )
    

    This technique relies on the fact that Cloud Firestore creates built-in indexes for all document fields, even fields in a nested map.

    While the lefthand-side of your where condition may be variable, that doesn't change the fact that these indexes should auto-generated (as far as I can see).

提交回复
热议问题