Explore Courses Blog Tutorials Interview Questions
0 votes
1 view
in GCP by (19.7k points)
recategorized by

Let's say we have a root collection named 'todos'.

Every document in this collection has:

  1. title: String
  2. subcollection named todo_items

Every document in the subcollection todo_items has

  1. title: String
  2. completed: Boolean

I know that querying in Cloud Firestore is shallow by default, which is great, but is there a way to query the todos and get results that include the subcollection todo_items automatically?

In other words, how do I make the following query include the todo_items subcollection?

db.collection('todos').onSnapshot((snapshot) => {

  snapshot.docChanges.forEach((change) => {

    // ...




1 Answer

+2 votes
by (62.9k points)
selected by
Best answer

I am here using AngularFirestore (afs) and Typescript, refer the code below:

import { map, flatMap } from 'rxjs/operators';

import { combineLatest } from 'rxjs';

interface DocWithId {

  id: string;


convertSnapshots<T>(snaps) {

  return <T[]> => {

    return {





getDocumentsWithSubcollection<T extends DocWithId>(

    collection: string,

    subCollection: string

  ) {

    return this.afs





        map((documents: T[]) =>

 => {

            return this.afs





                map(subdocuments =>

                  Object.assign(document, { [subCollection]: subdocuments })





        flatMap(combined => combineLatest(combined))




Hope this helps!


Welcome to Intellipaat Community. Get your technical queries answered by top developers!

28.4k questions

29.7k answers


94.1k users

Browse Categories