Querying a repeated property by count in NDB

KitB Source

Is there an efficient mechanism for querying by the number of items in a repeated property in NDB?

I'd like to do something like:

Class.query(class.repeated_property.count == 2)

but of course this doesn't work.

google-app-engineapp-engine-ndb

Answers

answered 6 years ago Shay Erlichmen #1

There is no len query semantic in GQL, you will need to have a sperate property for the length of the list and query on it.

answered 6 years ago Guido van Rossum #2

Specifically, you can use ComputedProperty to automatically store the count, e.g.

class X(ndb.Model):
  prop = ndb.StringProperty(repeated=True)
  prop_count = ndb.ComputedProperty(lambda e: len(e.prop))

X.query(X.prop_count == 2)

comments powered by Disqus