I am trying to figure out an elegant way to query all of the entities in an AppEngine datastore that have a certain property. Since entities that lack a property aren't included in an index, basically what I want to do is to retrieve the index for a given property. I'm sure it's possible to do something like:
Filter bigger = new FilterPredicate(PROPERTY,
FilterOperator.GREATER_THAN_OR_EQUAL,
0);
Filter smaller = new FilterPredicate(PROPERTY,
FilterOperator.LESS_THAN_OR_EQUAL,
0);
Filter present = CompositeFilterOperator.or(bigger, smaller);
Query q = new Query(KIND).setFilter(present);
but it doesn't look like a very elegant (or efficient) solution. Does anyone have a better idea?
If you don't need entities with null values, you can use this:
Filter filter = new FilterPredicate(PROPERTY, FilterOperator.NOT_EQUAL, null);
It may look simpler, but NOT_EQUAL filter actually results in two separate queries - just as your solution, unless App Engine is smart about null values - that I don't know.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With