实体属性参考

Datastore 模式的 Firestore (Datastore) 支持多种属性值数据类型。其中包括:

  • 整数
  • 浮点数
  • 字符串
  • 日期
  • 二进制数据

如需查看类型的完整列表,请参阅属性和值类型

属性和值类型

与实体关联的数据值由一个或多个属性构成。每个属性都有一个名称和一个或多个值。一个属性可具有多个类型的值,且两个实体的同一属性可具有不同类型的值。属性可以编入索引,也可以不编入索引(对属性 P 排序或过滤的查询会忽略未将 P 编入索引的实体)。一个实体最多可以有 20000 个编入索引的属性。

支持以下值类型:

值类型 Go 类型 排序顺序 备注
整数 int
int8
int16
int32
int64
数字 64 位整数,有符号
浮点数 float32
float64
数字 64 位双精度,
IEEE 754
布尔值 bool false<true
字符串(短) string Unicode
最多 1500 字节
字符串(长) string(带 noindex 最多 1 兆字节

未编入索引
字节切片(短) datastore.ByteString 字节顺序 最多 1500 字节
字节片(长) []byte 最多 1 兆字节

未编入索引
日期和时间 time.Time 时间顺序
地理位置点 appengine.GeoPoint 先按纬度排序,
再按经度排序
Datastore 键 *datastore.Key 按路径元素
(种类、标识符、
种类、标识符...)排序
Blobstore 键 appengine.BlobKey 字节顺序

您还可以使用 structslice 来聚合属性。如需了解详情,请参阅 Datastore 参考文档

如果查询涉及的属性具有混合类型的值,Datastore 会根据内部表示法确定排序方式:

  1. Null 值
  2. 定点数
    • 整数
    • 日期和时间
  3. 布尔值
  4. 字节序列
    • 字节切片(短)
    • Unicode 字符串
    • Blobstore 键
  5. 浮点数
  6. 地理位置点
  7. Datastore 键

由于长字节片和长字符串未编入索引,因此它们没有定义排序方式。