title: How to query an "array of objects" (multiple filters) with Google Datastore
body: <p>I think I'm missing something, but I can't figure it out.
  I use <code>Google Datastore</code> (via <code>nodeJS</code>) and I'd like to write a simple query.</p>
  
  <p>Let's consider a DB with these 2 simplified entities where <code>collaborator</code> 
   stands for "<code>someone</code> has an access to this entity until <code>some date</code>":</p>
  
  <pre><code>ENTITY #1
  { ID: 'entity1',
    FEATURE_A: false,
    COLLABORATORS: 
     [ 
      { UNTIL: '2018-06-04T19:00:00.369Z', EMAIL: 'A@A.com'},
      { UNTIL: '2018-06-04T20:00:00.369Z', EMAIL: 'B@B.com'}
     ]
   }
  
  ENTITY #2
  { ID: 'entity2',
    FEATURE_A: true,
    COLLABORATORS: 
     [ 
      { UNTIL: '2018-06-10T13:00:00.369Z', EMAIL: 'A@A.com'},
      { UNTIL: '2018-08-05T10:00:00.369Z', EMAIL: 'B@B.com'}
     ]
   }
  </code></pre>
  
  <p>How do I write a query that get all entities <code>WHERE</code> collaborator contains <code>A@A.com</code> and <strong>for which</strong> <code>A@A.com</code> has still an access because <code>today()</code> &lt; <code>UNTIL</code>?</p>
  
  <p>Query with multiple filters doesn't seem to work with an array of objects...
  Do I "just" need to write a composite index? I don't know how to do it at this time, but is it the road to walk? </p>
  
  <p>Thanks.</p>
  
  <hr>
  
  <p>This is the "array" as written into my Datastore console</p>
  
  <pre><code>{
    "values": [
      {
        "entityValue": {
          "properties": {
            "ACCESS": {
              "stringValue": "full"
            },
            "EMAIL": {
              "stringValue": "A@A.com"
            },
            "CREATEDAT": {
              "timestampValue": "2018-06-03T19:23:17.728Z"
            },
            "CREATOR": {
              "booleanValue": true
            }
          }
        }
      },
      {
        "entityValue": {
          "properties": {
            "UNTIL": {
              "stringValue": "2018-06-13T19:24:52.131Z"
            },
            "ACCESS": {
              "stringValue": "full"
            },
            "EMAIL": {
              "stringValue": "B@B.com"
            },
            "CREATEDAT": {
              "timestampValue": "2018-06-03T19:24:52.135Z"
            },
            "CREATOR": {
              "booleanValue": false
            }
          }
        }
      }
    ]
  }
  </code></pre>