字段类型
CloudBase 文档型数据库支持多种数据类型,满足不同场景的数据存储需求。
基础数据类型
| 数据类型 | 说明 | 示例 | 适用场景 |
|---|---|---|---|
| String | 字符串类型,用于存储文本数据 | "Hello World" | 用户名、描述信息、文本内容 |
| Number | 数字类型,包括整数和浮点数 | 123、3.14 | 年龄、价格、计数器 |
| Object | 对象类型,用于存储键值对结构的数据 | { "name": "张三", "age": 25 } | 用户信息、配置数据 |
| Array | 数组类型,用于存储有序的数据集合 | [1, 2, 3]、["a", "b", "c"] | 标签列表、商品分类 |
| Bool | 布尔类型,表示真或假 | true、false | 开关状态、权限标识 |
| Date | 时间类型,精确到毫秒 | new Date() | 创建时间、更新时间 |
| GeoPoint | 地理位置点,用经纬度标记位置 | { "latitude": 39.9, "longitude": 116.4 } | 位置信息、地图标记 |
| Null | 空值类型,表示没有值 | null | 可选字段的默认值 |
特殊数据类型详解
Date 时间类型
Date 类型用于存储时间信息,精确到毫秒级别。支持客户端时间和服务端时间两种创建方式。
客户端时间
使用 JavaScript 内置 Date 对象创建:
// 创建当前时间
const now = new Date();
// 创建指定时间
const specificDate = new Date('2023-12-25 10:30:00');
// 插入数据
db.collection('articles').add({
data: {
title: '文章标题',
createTime: now,
publishTime: specificDate
}
});
服务端时间
使用 serverDate 对象创建服务端当前时间标记:
// 使用服务端时间
db.collection('articles').add({
data: {
title: '文章标题',
createTime: db.serverDate()
}
});
GeoPoint 地理位置类型
GeoPoint 类型用于表示地理位置点,通过经纬度坐标唯一标记一个地理位置。
各SDK实现有所差异,下方分别展示对应示例
创建地理位置
- 小程序
- Web 端
const db = wx.cloud.database();
// 创建地理位置点
const location = db.Geo.Point(116.4, 39.9); // 经度, 纬度
// 插入带有地理位置的数据
db.collection('stores').add({
data: {
name: '北京店',
location: location,
address: '北京市朝阳区'
}
}).then(res => {
console.log('添加成功', res);
}).catch(err => {
console.error('添加失败', err);
});
import cloudbase from '@cloudbase/js-sdk';
const app = cloudbase.init({
env: 'your-env-id'
});
const db = app.database();
// 创建地理位置点
const location = new db.Geo.Point(116.4, 39.9); // 经度, 纬度
// 插入带有地理位置的数据
db.collection('stores').add({
name: '北京店',
location: location,
address: '北京市朝阳区'
}).then(res => {
console.log('添加成功', res);
}).catch(err => {
console.error('添加失败', err);
});
地理位置查询
- 小程序
- Web 端
const _ = db.command
db.collection('restaurants').where({
location: _.geoNear({
geometry: db.Geo.Point(116.4, 39.9),
minDistance: 1000,
maxDistance: 5000,
})
}).get()
const _ = db.command
db.collection('restaurants').where({
location: _.geoNear({
geometry: new db.Geo.Point(116.4, 39.9),
minDistance: 1000,
maxDistance: 5000,
})
}).get()
⚠️ 注意:对地理位置字段进行查询时,请建立地理位置索引,否则查询将失败
