在 Datastore 模式 Firestore 中的数据对象称为实体。实体具有一个或多个命名的属性,且每个属性可具有一个或多个值。同类实体不需要具有相同的属性,并且实体的给定属性的值也不需要全部具有相同的数据类型。(必要时,应用可在其自身的数据模型中设定和实施此类限制)。
Datastore 模式支持多种属性值数据类型,其中包括:
- 整数
- 浮点数
- 字符串
- 日期
- 二进制数据
Datastore 模式的数据库中的每个实体都有一个明确标识它的键。键由以下部分组成:
应用可以使用具体实体的键从数据库中提取该实体,也可以根据实体的键或属性值发出查询以检索一个或多个实体。
Datastore 模式 Firestore 本身并不对实体结构施加任何限制,例如限制给定属性采用特定类型的值;该任务由应用执行。
本页中的代码段基于 Datastore 模式 Firestore 入门中的示例构建。
处理实体
应用可以使用 Datastore 模式 Firestore API 来创建、检索、更新和删除实体。如果应用知道完整的实体键(或可从其父键、种类和标识符中提取),则可使用此键直接操作实体。应用还可以通过查询获取实体键;如需了解详情,请参阅查询主题。
创建实体
可通过初始化实体并设置其属性来创建新的实体:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
您可使用 upsert 或 insert 将实体保存到数据库;前者将覆盖 Datastore 模式中已经存在的实体,后者要求实体键尚不存在。
使用 upsert 插入实体的方式如下:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
使用 insert 插入实体的方式如下:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
检索实体
要从数据库中检索实体,请在查询中使用实体键:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
更新实体
如需使用 update 更新现有实体,请修改之前检索到的实体属性并使用键存储该实体:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
提供的数据将覆盖现有实体。整个对象必须发送到数据库。如果实体不存在,则更新失败。如果您想更新或创建实体,请如前所述使用 upsert。使用事务,您可以在单个原子事务中执行 get 和 update 操作。
删除实体
如果您知道实体的键,就可以使用 delete 删除实体:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
批量操作
Datastore 模式 Firestore 支持批量操作,因此可在单个 Datastore 模式调用中操作多个对象。
相对于分别调用每个单独的实体,这种批量调用速度更快,因为它们仅产生一次服务调用的开销。如果涉及多个实体组,则在服务器端对所有组并行执行该操作。
例如,您可以使用 upsert 插入/更新多个实体:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
您可查询多个实体:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
您可删除多个实体:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
批量操作不会改变读取、写入或删除费用,这些费用记录在价格和配额中。无论每个键是否存在,您都要为批量操作中的每个键付费。
操作所涉及的实体大小不影响读取、写入和删除操作的费用。但是,实体大小确实会影响存储空间大小费用。
增量和其他属性转换
使用 increment 等属性转换对属性进行服务器端更新。属性转换可避免额外的客户端读取操作(用于获取当前值)和客户端计算(用于确定新值)。
Datastore 模式支持以下属性转换:
incrementmaximumminimumappendMissingElementsremoveAllFromArraysetToServerValue(REQUEST_TIME)
以下示例演示了属性转换。此操作会按指定值递增属性:
REST
POST https://datastore.googleapis.com/v1/projects/{projectId}:commit
{
"mode": "NON_TRANSACTIONAL",
"mutations": [
{
"propertyMask": {}, // Empty write mask indicates only transforms can change the entity.
"propertyTransforms": [
{
"property": "quantity",
"increment": {
"integerValue": 2
}
},
{
"property": "inStock",
"maximum": {
"integerValue": 100
}
},
]
"upsert": {
"key": {
"path": [
{
"kind": "Items",
"name": "entity_1"
}
]
}
}
}
]
}以下示例将属性值设置为服务器处理请求的时间,精确到毫秒。
REST
POST https://datastore.googleapis.com/v1/projects/{projectId}:commit
{
"mode": "NON_TRANSACTIONAL",
"mutations": [
{
"propertyMask": {}, // // Empty write mask indicates only transforms can change the entity.
"propertyTransforms": [
{
"property": "timeField",
"setToServerValue": "REQUEST_TIME"
},
]
"upsert": {
"key": {
"path": [
{
"kind": "Kind_1",
"name": "entity_1"
}
]
}
}
}
]
}以下示例会附加缺失的数组元素。
REST
POST https://datastore.googleapis.com/v1/projects/{projectId}:commit
{
"mode": "NON_TRANSACTIONAL",
"mutations": [
{
"propertyMask": {}, // Empty write mask indicates only transforms can change the entity.
"propertyTransforms": [
{
"property": "arrayField",
"appendMissingElements": {
"values": [
{ "stringValue": "str" }, { "integerValue": 10 }
]
}
},
]
"upsert": {
"key": {
"path": [
{
"kind": "Kind_1",
"name": "entity_1"
}
]
}
}
}
]
}maximum 和 minimum 的混合类型
maximum 和 minimum 属性转换接受整数或双精度(浮点数)值作为输入。目标属性中的值也可以是整数或双精度值。
如果属性不是整数或双精度值,或者属性不存在,则转换会将属性设置为给定的输入值和类型。如果应用 maximum 运算时属性和输入值属于混合类型(即一个是整数,一个是双精度数),则属性会采用较大运算数的类型。对于 minimum,该属性采用较小运算数的类型。
如果运算数等效(例如 3 和 3.0),则属性不会更改。0、0.0 和 -0.0 都是零。零存储值和零输入值的 maximum 或 minimum 始终是存储值。任何数值和 NaN 的 maximum 或 minimum 均为 NaN。
多项突变和 PropertyMask
在请求中进行任何其他更改后,系统会按顺序应用属性转换。PropertyMask 会将 insert、update 和 upsert 更改限制为指定的属性,但不会限制属性转换。
例如,从以下实体开始:
REST
entity: {
"key" : {
"path": [
{
"kind": "Kind_1",
"name": "entity_1"
}
]
}
"properties" : {
"a": 1,
"b": 2,
"c": 3
}
}以下请求会同时更新 a 和 b,然后对属性 b 应用属性转换:
POST https://datastore.googleapis.com/v1/projects/{projectId}:commit { "mode": "NON_TRANSACTIONAL", "mutations": [ { "propertyMask": {"a", "b"}, // update property a, b "update": { "key": { "path": [ { "kind": "Kind_1", "name": "entity_1" } ] } "properties": { "a" : "new_value", "b" : -2 } }, "propertyTransforms": [ { "property": "b", "increment": { "integerValue": 2 } } ] } ] }
结果如下:
REST
entity: {
"key" : {
"path": [
{
"kind": "Kind_1",
"name": "entity_1"
}
]
}
"properties" : {
"a": "new_value",
"b": 0,
"c": 3
}
}种类和标识符
每个实体均属于特定“种类”,如此可将实体进行分类以便于查询。例如,任务列表应用可以通过种类为 Task 的实体来表示要完成的每项任务。
以两个下划线 (__) 开头的所有种类名称均预留给系统,不得使用。
分配标识符
除了种类,在创建实体时还会为每个实体分配标识符。标识符是实体键的一部分,因此与实体永久关联且不可更改。标识符可通过下述两种方式分配:
应用可为实体指定自己的键名字符串。
如需了解实体键字符串的大小上限,请参阅限制。
您可让 Datastore 模式 Firestore 自动为实体分配整数数字 ID。
如需了解分配标识符的最佳实践,请参阅最佳实践中的“键”部分。
以下示例创建了一个种类为 Task 的键,该键使用键名“sampleTask”作为标识符:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Datastore 模式还可自动分配 ID。Datastore 模式生成大致均匀分布的未使用 ID 的随机序列。每个 ID 最多可包含 16 位十进制数字。
以下示例使用 Task 种类而不使用键名创建键。当具有不完整键的实体保存为 Datastore 模式时,将返回实体的完整键(包括自动分配的 ID):
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
如果希望向用户显示实体 ID 和/或按照顺序显示实体 ID,最好是使用手动分配。
分配您自己的数字 ID
有时,高级应用可能希望手动将自己的数字 ID 分配给其创建的实体,而不是使用键名字符串或自动生成数字 ID。但要注意,没有什么方法可以阻止 Datastore 模式的数据库将您手动分配的数字 ID 分配给其他实体。避免这种冲突的唯一方法是让应用通过 allocateIds() 方法获取一批 ID。
Datastore 模式的自动 ID 生成器将跟踪已按这些方法分配的 ID,并避免将其重复用于其他实体,因此您可以安全地使用这些 ID 而不引发冲突。您无法手动选择 allocateIds() 方法返回的值。allocateIds() 返回的值由 Datastore 模式分配。
祖先路径
Datastore 模式下的实体形成一个与文件系统目录结构类似的层级结构空间。创建实体时,您可选择指定另一实体作为其父实体;新实体是父实体的子实体(请注意,与文件系统不同,无需实际存在父实体)。没有父实体的实体是根实体。实体与其父实体之间的关联是永久的,实体创建后就无法更改。Datastore 模式绝不向父实体相同的两个实体分配同一数字 ID,也不分配给两个根实体(即没有父实体的实体)。
一个实体可以有多个级别的祖先实体和后代实体。实体的父级、父级的父级等(以此类推)是其祖先实体;其子级、子级的子级等是其后代实体。从根实体开始,从父实体到子实体,最终到达给定实体的实体序列构成了该实体的祖先实体路径。用于标识实体的完整键由一系列种类-标识符对组成,这些对指定了实体的祖先路径,并以实体本身的种类-标识符对结尾:
[User:alice, TaskList:default, Task:sampleTask]
对于根实体,祖先路径为空,且键仅由实体自身的种类和标识符组成:
[User:alice]
父实体级别
父实体级别可用于整理数据。例如,如果应用按 TaskList 实体整理 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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
如果应用先按 User 实体组织 Task 实体,再按 TaskList 实体进行整理,请使用多个父实体级别:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
如前面的示例所示,在创建具有父实体的实体时,您需要指定父实体的完整祖先路径。
维护用户个人资料的应用可能只需要用户个人资料数据的一个父实体级别。例如,对 Profile 实体使用单级别 User 祖先路径:
[User:alice, Profile:public]
实现会议室安排的应用可能需要多个级别的父实体,比如对 Room 实体使用多级别 Building/Floor 祖先路径:
[Building:C, Floor:1, Room:123]
实体组
实体组由一个根实体及其所有后代实体组成。应用通常通过实体组整理高度相关的数据。例如,应用可使用实体组来存储一个产品或一个用户个人资料的相关数据。
属性和值类型
与实体关联的数据值由一个或多个属性构成。每个属性都有一个名称和一个或多个值。
属性可具有多个类型的值,且两个实体的同一属性可具有不同类型的值。属性并非一定要编入索引(对属性 p 进行排序或筛选的查询会忽略未将 p 编入索引的实体)。
以下为一些示例属性:
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
数组属性
具有多个值的属性称为数组属性。本示例包含两个数组属性。第一个名为 tags,具有值 fun 和 programming。第二个名为 collaborators,具有值 alice 和 bob。
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 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
数组属性在某些情况下会很有用。例如,在使用等式过滤条件执行查询时:只要实体属性的任一值与过滤条件中指定的值匹配,该实体就符合查询条件。如需详细了解数组属性(包括注意事项),请参阅查询主题。
支持的值类型
属性以包含实体属性名称和值的 string/value 映射形式进行存储。值支持以下类型:
32 位整数
- REST API
- 字段名称:
entityValue - type:一个 JSON 实体映射,其中包含一个属性
__int__,其值为整数integerValue
- 字段名称:
- RPC API
- 字段名称:
entity_value - type:一个
Entity消息,其中包含一个具有integer_value的属性__int__
- 字段名称:
- 排列顺序:数字
64 位整数
- REST API
- 字段名称:
integerValue - 类型:数字或字符串。对于无法完全表示为数字的整数使用字符串。
- 字段名称:
- RPC API
- 字段名称:
integer_value - 类型:
int64
- 字段名称:
- 排列顺序:数字
数组
REST API
- 字段名称:
arrayValue - 类型:包含 JSON 值对象数组的
ArrayValue对象 - 您可以使用
arrayValue字段(类型为 ArrayValue)并将其values字段设置为值数组,来分配数组属性。如需将属性设置为不编入索引,请将属性值对象的excludeFromIndexes字段设置为true。
- 字段名称:
RPC API
- 字段名称:
array_value - 类型:包含一个或多个
Value消息的ArrayValue消息 - 可按以下方式分配数组属性:使用类型为 ArrayValue 的
array_value字段,再使用多个Value对象来填充其values字段。如需将某属性设置为不编入索引,请将Value的exclude_from_indexes字段设置为true。
- 字段名称:
排列顺序:无
注意:不能包含其他数组值。值实例不得设置
meaning或exclude_from_indexes。
布尔值
- REST API
- 字段名称:
booleanValue - 类型:
true或false
- 字段名称:
- RPC API
- 字段名称:
boolean_value - 类型:
bool
- 字段名称:
- 排序顺序:
false<true
BSON 时间戳
- REST API
- 字段名称:
entityValue - type:一个 JSON 实体映射,其中包含一个具有整数属性
seconds和increment的属性__request_timestamp__
- 字段名称:
- RPC API
- 字段名称:
entity_value - type:一个
Entity消息,表示包含seconds和increment的 BSON 时间戳
- 字段名称:
- 排列顺序:按时间顺序
- 备注:一个 64 位时间戳值,由 Unix 秒数和增量计数器组成。
字节 (Blob)
- REST API
- 字段名称:
blobValue - 类型:字符串。必须为 base64 编码。
- 字段名称:
- RPC API
- 字段名称:
blob_value - 类型:
bytes
- 字段名称:
- 排列顺序:字节顺序
- 注意:如果属性编入索引,则不超过 1500 个字节;否则不超过 1048487 个字节(1 MiB - 89 个字节)。
带子类型的字节
- REST API
- 字段名称:
entityValue - type:一个 JSON 实体映射,其中包含一个属性
__binary__,该属性具有 base64 编码的blobValue(子类型字节附加到数据前面)
- 字段名称:
- RPC API
- 字段名称:
entity_value - type:一个
Entity消息,其中包含一个属性__binary__,其值为blob_value(在数据前面加上子类型字节)
- 字段名称:
- 排列顺序:字节顺序(先子类型,后值)
- 备注:具有 BSON 子类型指示器的二进制字节序列。
日期和时间(时间戳)
- REST API
- 字段名称:
timestampValue - 类型:字符串(RFC 3339 格式,以毫秒计,例如
2013-05-14T00:01:00.234Z)
- 字段名称:
- RPC API
- 字段名称:
timestamp_value - 类型:
Timestamp
- 字段名称:
- 排列顺序:按时间顺序
- 注意:
- 在 Datastore 模式下存储时,仅精确到微秒;舍掉任何额外的精度。
- 作为投影查询的一部分返回时,Datastore 模式会将时间戳值转换为微秒(整数值)。
Decimal128
- REST API
- 字段名称:
entityValue - type:一个 JSON 实体映射,其中包含一个具有
stringValue的属性__decimal128__
- 字段名称:
- RPC API
- 字段名称:
entity_value - type:一个
Entity消息,其中包含一个具有string_value的__decimal128__属性
- 字段名称:
- 排列顺序:数字
- 备注:用于高精度算术的 128 位十进制浮点数。
Double(浮点数)
- REST API
- 字段名称:
doubleValue - 类型:数字
- 字段名称:
- RPC API
- 字段名称:
double_value - 类型:
double
- 字段名称:
- 排列顺序:数字
- 注意:64 位双精度,IEEE 754
嵌入式实体
- REST API
- 字段名称:
entityValue - 类型:JSON 实体
- 字段名称:
- RPC API
- 字段名称:
entity_value - 类型:一条
Entity消息
- 字段名称:
- 排列顺序:无
- 注意:编入索引后,您可对子属性进行查询。如果您将此值从索引中排除,则所有子属性也会从索引中排除。
地理位置点
- REST API
- 字段名称:
geoPointValue - 类型:JSON 纬度/经度对
- 字段名称:
- RPC API
- 字段名称:
geo_point_value - 类型:一条
LatLng消息
- 字段名称:
- 排列顺序:先按纬度,再按经度
键
- REST API
- 字段名称:
keyValue - 类型:JSON Datastore 模式键
- 字段名称:
- RPC API
- 字段名称:
key_value - 类型:一条
Key消息
- 字段名称:
- 排序顺序:按路径元素(种类、标识符、种类、标识符…)
MaxKey
- REST API
- 字段名称:
entityValue - type:一个 JSON 实体映射,其中包含一个具有
nullValue的属性__max__
- 字段名称:
- RPC API
- 字段名称:
entity_value - type:一个
Entity消息,其中包含一个具有null_value的__max__属性
- 字段名称:
MinKey
- REST API
- 字段名称:
entityValue - type:一个 JSON 实体映射,其中包含一个具有
nullValue的属性__min__
- 字段名称:
- RPC API
- 字段名称:
entity_value - type:一个
Entity消息,其中包含一个具有null_value的__min__属性
- 字段名称:
空
- REST API
- 字段名称:
nullValue - 类型:null
- 字段名称:
- RPC API
- 字段名称:
null_value - 类型:
NullValue
- 字段名称:
- 排列顺序:无
ObjectId
- REST API
- 字段名称:
entityValue - type:一个 JSON 实体映射,其中包含一个具有
stringValue(小写十六进制字符串)的属性__oid__
- 字段名称:
- RPC API
- 字段名称:
entity_value - type:一个
Entity消息,其中包含一个具有string_value的__oid__属性
- 字段名称:
- 排列顺序:按 12 字节序列
正则表达式
- REST API
- 字段名称:
entityValue - type:一个 JSON 实体映射,其中包含
__regex__以及pattern和options的属性
- 字段名称:
- RPC API
- 字段名称:
entity_value - type:一个
Entity消息,表示具有pattern和options属性的正则表达式
- 字段名称:
- 排列顺序:先按模式,再按选项
文本字符串
- REST API
- 字段名称:
stringValue - 类型:string
- 字段名称:
- RPC API
- 字段名称:
string_value - 类型:
string
- 字段名称:
- 排列顺序:UTF-8 编码字节顺序
- 注意:如果属性编入索引,则不超过 1500 个字节;否则不超过 1048487 个字节(1 MiB - 89 个字节)。
值类型排序
如果查询涉及的属性具有几种类型的值,Datastore 模式的数据库会使用基于内部表示法的确定性排序方式。以下列表显示了该顺序:
- Null 值
- MinKey
- 32 位整数
- 64 位整数和时间戳
- 布尔值
- 字节字符串和 Unicode 字符串
- 具有子类型的字节
- 双精度值(NaN 排在最后)
- 地理位置点
- Datastore 模式键
- ObjectId
- BSON 时间戳
- 正则表达式
- Decimal128(NaN 排在最后)
- MaxKey