2

How can I know if docs is empty? I can't do len(docs)

docs = query.stream()
for doc in docs:
    // do something

I need to know if there is no document that matches the query

Thank you!

Konrad Rudolph
  • 530,221
  • 131
  • 937
  • 1,214
Sebastian
  • 3,666
  • 2
  • 19
  • 32

2 Answers2

1

Since stream() returns a generator, there won't be a trivial way to determine if it is empty without actually reading it.

By far the simplest solution would delay knowing until after you are past the loop. Something like this:

docs = query.stream()
stream_empty = True
for doc in docs:
  stream_empty = False
  # do something

if stream_empty:
  print("it was empty")
else:
  print("it wasn't empty")

Otherwise, you get into having to build your own generator around the stream's generator that allows peeking. See this question.

robsiemb
  • 6,157
  • 7
  • 32
  • 46
0

Instead of using the generator returned by stream() you can directly user the query and its method get().

The get method runs the query and gathers the documents within a list that you can access. This list is empty if no document match the query.

docs = query.get()
if not docs:
    # do something
else : 
    for doc in docs :
        doc = doc.to_dict()
        # do something
Luka Barisic
  • 258
  • 3
  • 10