jlyh
jlyh

Reputation: 701

Google Datastore query filter for multiple values for same property

I have a query I wish to run on google Datastore that is intended to retrieve data from multiple devices. However, I couldn't find anywhere in the documentation that would allow me to get data from e.g. device-1 or device-2 or device-3, i.e. only 1 property name can be set. Is this a Datastore limitation? Or am I just missing something that I don't know about?

Based on the NodeJS client library, the query might look something like the below filter criteria:

var query = datastore.createQuery('data')
              .filter('device_id', 1)
              .filter('device_id', 2)
              .filter('device_id', 3);

Otherwise, I might have to run separate queries for the various devices, which doesn't seem like a very elegant solution, especially if there are a lot of devices to simultaneously run queries on.

Any suggestions for the Datastore API or alternative approaches are welcome!

Upvotes: 0

Views: 2816

Answers (1)

Dan Cornilescu
Dan Cornilescu

Reputation: 39814

Yes, this would be an OR operation which is one of the Restrictions on queries (emphasis mine):

The nature of the index query mechanism imposes certain restrictions on what a query can do. Cloud Datastore queries do not support substring matches, case-insensitive matches, or so-called full-text search. The NOT, OR, and != operators are not natively supported, but some client libraries may add support on top of Cloud Datastore. Additionally:

Upvotes: 1

Related Questions