云数据存储按祖先排序
Cloud datastore order by with ancestor
语言:NodeJS
查询google云数据时,是否可以同时使用order和ancestorKey?
与此类似的内容:
const ancestorKey = datastore.key({namespace: 'MyNameSpace',
path: ['MyParentEntity', 'parent_entity_id']});
const query = datastore.createQuery('MyNameSpace', 'my_child_entity')
.order('someProperty', {descending: true})
.hasAncestor(ancestorKey);
注意:以上方法无效
TL;DR: 是的,这是可能的。
通过API,至少,这种查询是可以的。
示例:
- 首先我们创建祖先实体(保留响应中的密钥 ID)。 [API call]
- 然后我们创建几个子实体。 API 调用:[1] [2]
对于 Datastore queries you'll need an index for each property or combination of properties that you want to query. Datastore provides built-in single-property indexes by default,但是您的查询是复合的 (ancestor+order_property),因此您必须构建自己的索引。为此,首先编写您的 index.yaml
文件(我正在创建两个索引,一个用于升序排序,另一个用于降序排序):
indexes:
- kind: child
ancestor: yes
properties:
- name: order
direction: desc
- kind: child
ancestor: yes
properties:
- name: order
direction: asc
使用 gcloud datastore create-indexes index.yaml
部署索引
等待索引建立完成,即可进行查询。 API 呼叫:[ascending] [descending]
您可以在 cloud shell.
中测试这个例子
知道 API 可以正常工作,您只需在 idiomatic library 中实现它即可。确保您正确定义了实体,并创建了索引。如果您有疑问,只需通过 API 尝试查询以验证它是否应该在节点内工作。
语言:NodeJS
查询google云数据时,是否可以同时使用order和ancestorKey?
与此类似的内容:
const ancestorKey = datastore.key({namespace: 'MyNameSpace',
path: ['MyParentEntity', 'parent_entity_id']});
const query = datastore.createQuery('MyNameSpace', 'my_child_entity')
.order('someProperty', {descending: true})
.hasAncestor(ancestorKey);
注意:以上方法无效
TL;DR: 是的,这是可能的。
通过API,至少,这种查询是可以的。
示例:
- 首先我们创建祖先实体(保留响应中的密钥 ID)。 [API call]
- 然后我们创建几个子实体。 API 调用:[1] [2]
对于 Datastore queries you'll need an index for each property or combination of properties that you want to query. Datastore provides built-in single-property indexes by default,但是您的查询是复合的 (ancestor+order_property),因此您必须构建自己的索引。为此,首先编写您的
index.yaml
文件(我正在创建两个索引,一个用于升序排序,另一个用于降序排序):indexes: - kind: child ancestor: yes properties: - name: order direction: desc - kind: child ancestor: yes properties: - name: order direction: asc
使用
gcloud datastore create-indexes index.yaml
部署索引
等待索引建立完成,即可进行查询。 API 呼叫:[ascending] [descending]
您可以在 cloud shell.
中测试这个例子知道 API 可以正常工作,您只需在 idiomatic library 中实现它即可。确保您正确定义了实体,并创建了索引。如果您有疑问,只需通过 API 尝试查询以验证它是否应该在节点内工作。