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 |
字节顺序 |
您还可以使用 struct
或 slice
来聚合属性。如需了解详情,请参阅 Datastore 参考文档。
如果查询涉及的属性具有混合类型的值,Datastore 会根据内部表示法确定排序方式:
- Null 值
- 定点数
- 整数
- 日期和时间
- 布尔值
- 字节序列
- 字节切片(短)
- Unicode 字符串
- Blobstore 键
- 浮点数
- 地理位置点
- Datastore 键
由于长字节片和长字符串未编入索引,因此它们没有定义排序方式。