Datastore 模式 Firestore 提供对元数据的访问权限,元数据包括实体组、命名空间、实体种类和属性的相关信息,以及每个属性的属性表示法。例如,您可以使用元数据为应用或后端管理功能构建自定义 Datastore 查看器。
Google Cloud 控制台中的 Datastore 信息中心还提供一些有关应用的元数据,但其中显示的数据在某些重要方面与这些函数返回的数据有所不同。
- 时效性。信息中心内的数据每天只更新一次,而使用 API 读取元数据会获取当前数据。
- 内容。信息中心中的某些元数据不能通过 API 获得;反之亦然。
- 速度。元数据获取和查询的计费方式与数据存储区获取和查询相同。元数据查询用于获取命名空间、种类和属性的相关信息,但通常执行起来较慢。根据经验,返回 N 个实体的元数据查询预计与各返回单个实体的 N 个普通查询的时间大致相同。此外,属性表示法查询(非仅限于键的属性查询)比仅限于键的属性查询速度要慢。对实体组元数据进行的元数据获取比获取常规实体要快一些。
元数据查询
为元数据查询保留三种特殊实体种类:
实体 | 说明 |
---|---|
__namespace__ |
用于查找应用实体中使用的所有命名空间。 |
__kind__ |
用于查询特定种类。 |
__property__ |
用于通过某个种类的属性进行查询。 |
这些种类不会与应用中可能已存在的其他相同名称的种类冲突。通过查询这些特殊种类,您可以检索包含所需元数据的实体。
元数据查询返回的实体是根据数据库的当前状态动态生成的。虽然您可以创建种类为 __namespace__
、__kind__
或 __property__
的本地实体对象,但任何将它们存储在数据库中的尝试都将失败。
命名空间查询
您可以使用命名空间查询来查找应用的实体中使用的所有命名空间。这样您就可以跨多个命名空间执行管理功能等活动。
命名空间查询返回特殊种类 __namespace__
的实体,其键名为命名空间的名称。(由空字符串 ""
指定的默认命名空间例外:由于空字符串不是有效的键名,因此此命名空间改为以数字 ID 1
为键)。此类查询支持通过特殊伪属性 __key__
仅对范围进行过滤,该伪属性的值就是实体的键。结果可以按 __key__
值升序(但不能降序)排序。由于 __namespace__
实体没有属性,仅限于键的查询和非仅限于键的查询返回的信息相同。
以下示例返回应用的命名空间列表,其范围介于分配给 startNamespace
和 endNamespace
变量的值之间:
C#
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore C# API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Go API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Java API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Node.js API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore PHP API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Python API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Ruby API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
GQL
SELECT __key__ FROM __namespace__ WHERE __key__ >= KEY(__namespace__, 'namespace-a') AND __key__ < KEY(__namespace__, 'namespace-b')
种类查询
种类查询返回种类为 __kind__
的实体,其键名为实体种类的名称。此类型的查询隐式地限制于当前命名空间,并且仅支持对 __key__
伪属性的范围进行过滤。结果可以按 __key__
值升序(但不能降序)排序。由于 __kind__
实体没有属性,仅限于键的查询和非仅限于键的查询返回的信息相同。
以下示例打印应用中使用的种类列表:
C#
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore C# API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Go API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Java API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Node.js API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore PHP API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Python API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Ruby API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
GQL
SELECT __key__ FROM __kind__
属性查询
属性查询返回种类为 __property__
的实体,该实体表示与某实体种类关联的已编入索引的属性。(不包括未编入索引的属性)。代表种类 k 的属性 p 的实体按以下方式构建:
- 对于该实体的键,种类为
__property__
,键名为 p。 - 对于该实体的父键,种类为
__kind__
,键名为 k。 - 该实体的
property_representation
数组属性包含属性的所有表示法。
例如,如果您的数据库恰好包含两个具有 name
和 done
属性的 Task
实体:
Key: 'Task:1'
name: 'Read some properties'
done: true
Key: 'Task:2'
name: 'Climb'
done: null
那么由 __property__
查询返回的两个实体将是:
Key: '__kind__:Task/__property__:name'
property_representation: [ 'STRING' ]
Key: '__kind__:Task/__property__:done'
property_representation: [ 'BOOLEAN', 'NULL' ]
属性查询会被隐式限制为当前命名空间,并且仅支持对祖先实体或 __key__
伪属性的某个范围进行有限过滤。
“仅限于键”的属性查询比非仅限于键的查询更有效,因为不需要收集属性的表示法。以下示例将检索应用的所有实体种类的名称以及与各种类相关联的属性:
C#
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore C# API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Go API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Java API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Node.js API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore PHP API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Python API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Ruby API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
GQL
SELECT __key__ FROM __property__
属性查询:属性表示法
非仅限于键的属性查询称为“属性表示法查询”,其返回用于每个属性的值类型的相关额外信息。对于表示种类为 k 的属性 p 的实体,property_representation
属性是一个数组,其中包含种类为 k 的任何实体的 p 值的所有表示法。
每个值的表示法如下所示(请注意,某些值类型会有相同的表示法):
值类型 | 表示法 |
---|---|
整数 | INT64 |
浮点数 | DOUBLE |
布尔值 | BOOLEAN |
文本字符串 | STRING |
字节字符串 | STRING |
日期和时间 | INT64 |
数据存储区键 | REFERENCE |
嵌入式实体 | STRING |
数组 | 数组元素的表示法 |
地理位置点 | POINT |
Null | NULL |
以下示例使用祖先属性查询查找 Task
种类的属性的所有表示法:
C#
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore C# API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Go API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Java API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Node.js API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore PHP API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Python API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Ruby API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
GQL
SELECT * FROM __property__ WHERE __key__ HAS ANCESTOR KEY(__kind__, 'Task')
属性查询:过滤
属性查询支持对 __kind__
或 __property__
键进行祖先过滤,以将查询结果限为单一种类或属性,如上面的属性表示法查询所示。
属性查询还可以通过伪属性 __key__
的某个范围进行过滤,其中键表示 __kind__
或 __property__
实体。结果可以按 __key__
值升序(但不能降序)排序。过滤适用于种类属性对,先按种类排序,再按属性排序。例如,假设您的实体具有以下属性:
- 种类
Task
,其属性为:created
priority
tags
- 种类
TaskList
,其属性为:created
以下仅限于键的属性查询:
C#
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore C# API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Go API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
不适用Java
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Java API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Node.js API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
不适用PHP
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore PHP API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 有关详情,请参阅 Cloud Datastore Python API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
不适用Ruby
如需了解如何安装和使用 Cloud Datastore 客户端库,请参阅 Cloud Datastore 客户端库。 如需了解详情,请参阅 Cloud Datastore Ruby API 参考文档。
如需向 Cloud Datastore 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
GQL
SELECT __key__ FROM __property__ WHERE __key__ >= KEY(__kind__, 'Task', __property__, 'priority')
将收集以下种类属性名称对:
Task, priority
Task, tags
TaskList, created
请注意,查询结果包含 Task
和 TaskList
种类的属性,但不包含 Task
种类的 created
属性,因为此属性不在为查询指定的范围内。