Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Querying a repeated property by count in NDB

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.

like image 393
KitB Avatar asked Jul 21 '12 17:07

KitB


2 Answers

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)
like image 180
Guido van Rossum Avatar answered Nov 08 '22 01:11

Guido van Rossum


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.

like image 35
Shay Erlichmen Avatar answered Nov 08 '22 00:11

Shay Erlichmen