我想我错过了一些东西,但我无法弄明白。
我使用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()
< UNTIL
?
使用多个过滤器进行查询似乎无法使用对象数组... 我和#34;只是"需要写一个复合索引?我此时不知道该怎么做,但这是走路吗?
感谢。
这是"数组"写入我的数据存储控制台
{
"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
}
}
}
}
]
}
答案 0 :(得分:1)
将此作为答案,因为我似乎没有找到在评论中正确插入代码的方法。
我可以重现以复制COLLABORATORS块的最相似的结构是以下数组结构::
{
"values": [
{
"entityValue": {
"properties": {
"UNTIL": {
"stringValue": "1st"
},
"EMAIL": {
"stringValue": "A@A.com"
}
}
}
},
{
"entityValue": {
"properties": {
"UNTIL": {
"stringValue": "2nd"
},
"EMAIL": {
"stringValue": "B@B.com"
}
}
}
}
]
}
即便如此,我也无法获得您实体的精确副本,因为那时COLLABORATORS的字段显示如下:
[{"UNTIL":"1st","EMAIL":"A@A.com"},
{"UNTIL":"2nd","EMAIL":"B@B.com"}]
由于引用了“UNTIL”和“EMAIL”,因此并不完全相同。你能发布你的结构代码吗?