Я думаю, что что-то упустил, но я не могу понять это.Я использую Google Datastore
(через nodeJS
) и хотел бы написать простой запрос.
Давайте рассмотрим БД с этими двумя упрощенными сущностями, где collaborator
означает "someone
имеет доступдо этой сущности до some date
":
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'}
]
}
Как мне написать запрос, чтобы получить все сущности WHERE
соавтор содержит A@A.com
и , для которых A@A.com
ещедоступ, потому что today()
<<code>UNTIL?
Запрос с несколькими фильтрами, похоже, не работает с массивом объектов ... Нужно ли мне просто написать составной индекс?Я не знаю, как это сделать в настоящее время, но дорога ли это?
Спасибо.
Это "массив", записанный в моей консоли хранилища данных
{
"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
}
}
}
}
]
}