Javascript 仅从对象数组gcloud数据存储中获取选定对象
我的gcloud数据存储中有此结构Javascript 仅从对象数组gcloud数据存储中获取选定对象,javascript,node.js,google-cloud-platform,google-cloud-datastore,Javascript,Node.js,Google Cloud Platform,Google Cloud Datastore,我的gcloud数据存储中有此结构 "data": { "obj": { "added_time": "new Date().toUTCString()", "person_id": 13, "places": [{ "place_id": 12, "place_name": "First Place", "place_type": "1", "fruits": [{ "id": "1", "name": "orange"
"data": {
"obj": {
"added_time": "new Date().toUTCString()",
"person_id": 13,
"places": [{
"place_id": 12,
"place_name": "First Place",
"place_type": "1",
"fruits": [{
"id": "1",
"name": "orange"
},
{
"id": "2",
"name": "apple"
}
]
},
{
"place_id": 15,
"place_name": "secondPlace",
"place_type": "1",
"fruits": [{
"id": "1",
"name": "Grapes"
},
{
"id": "2",
"name": "Banana"
}
]
}
]
}
}
};
我想查询添加的时间、人员id和地点id
这是我的综合指数
indexes:
- kind: persons
properties:
- name: obj.person_id
- name: obj.added_time
- name: obj.places.place_id
我试过这个问题
const query = datastore
.createQuery("persons")
.filter("obj.person_id", "=", 13)
.filter("obj.places.place_id", "=", 12);
这是工作,但它给我所有其他地方以及。
例如,在这个查询中,我应该只得到place_id为12的place对象,但我得到的另一个place_id为13的对象不应该出现
1) 我怎样才能只得到一个对象
2) 是否可以在数据存储中使用“in”运算符,如places.place\u id in(12,13)
谢谢。您正在(简单)查询人员
种类,因此结果将是人员
实体,其中包括整个位置
数组
在places
数组中仅使用一个位置来获取persons
实体的唯一方法是执行以下操作:。从技术上讲,您可以获得这样的人员
实体的数组-每个匹配的位置一个,但是由于您也通过place\u id
进行过滤,因此该数组将只包含一个元素
您需要特别注意,因为您还需要在数组属性上进行投影,请参见。并检查相关的投影
否,筛选不支持在运算符中使用,请参见您正在对人员
种类进行(简单)查询,因此结果将是人员
实体,其中包括整个位置
数组
在places
数组中仅使用一个位置来获取persons
实体的唯一方法是执行以下操作:。从技术上讲,您可以获得这样的人员
实体的数组-每个匹配的位置一个,但是由于您也通过place\u id
进行过滤,因此该数组将只包含一个元素
您需要特别注意,因为您还需要在数组属性上进行投影,请参见。并检查相关的投影
否,筛选不支持
运算符中的,请参阅