云数据库:

云数据库提供高性能的数据库写入和查询服务。通过腾讯云开发(Tencent CloudBase.TCB)的SDK,可以直接在客户端对数据进行读写,也可以在云函数中读写数据,还可以通过控制台对数据进行可视化的增、删、查、改等操作。微信小程序云开发所使用的数据库本质上就是一MongoDB数据库。MongoDB数据库是介于关系数据库和非关系数据库之间的产品:是非关系数据库中功能最丰富、最像关系数据库的。
数据库:默认情况下,云开发的函数可以使用当前环境对应的数据库。可以根据需要使用不同的数据库。对应MySQL中的数据库。
集合:数据库中多个记录的集合。对应MySQL中的表。
文档:数据库中的一条记录。对应MySQL中的行。
字段:数据库中特定记录的值。对应MySQL中的列。

数据类型:

string:字符串。

number:数字。

object:对象。

array:数组。

bool:布尔值。

date:时间。

geo:多种地理位置类型。

null。

云数据库API

触发网络请求的API

API说明
get获取集合/记录数据
add在集合上新增记录
update更新集合/记录数据
set替换更新一个记录
remove删除记录
count统计查询语句对应的记录条数

获取引用的API

API说明
database获取数据库引用,返回Database对象
collection获取集合引用,返回Collection对象
doc获取对一个记录的引用,返回Document对象

数据库对象的字段

API说明
command获取数据库查询及更新指令,返回Command
serverDate构造服务端时间
Geo获取地理位置操作对象,返回Geo对象

集合对象API

API说明
doc获取对一个记录的引用,返回Document对象
add在集合上新增记录
where构建一个在当前集合上的查询条件,返回Query,查询条件中可使用查询指令
orderBy 指定查询数据的排序方式
limit指定返回数据的数量上限
skip指定查询时从选中的记录列表中的第几项之后开始返回
field指定返回结果中每条记录应包含的字段

记录/文档对象API

API说明
get获取记录数据
update局部更新数据
set替换更新记录
remove删除记录
field指定返回结果中记录应包含的字段

Command对象查询指令

类别指令说明
比较运算eq字段是否等于指定值
neq字段是否不等于指定值
lt字段是否小于指定值
lte字段是否小于或等于指定值
gt字段是否大于指定值
gte字段是否大于或等于指定值
in字段值是否在指定数组中
nin字段值是否不在指定数组中
逻辑运算and条件与,表示需同时满足多个查询筛选条件
or条件或,表示只需满足其中一个条件即可
nor表示需所有条件都不满足
not条件非,表示对给定条件取反
字段exists字段存在
mod字段值是否符合给定取模运算
数组all数组所有元素是否满足给定条件
elemMatch数组是否有一个元素满足所有给定条件
size数组长度是否等于给定值
地理位置geoNear找出字段值在给定点的附近的记录
geoWithin找出字段值在指定区域内的记录
geoIntersects找出与给定的地理位置图形相交的记录

Command对象更新指令
类别指令说明
字段set设置字段为指定值
remove删除字段
inc原子操作,自增字段值
mul原子操作,自乘字段值
min如果字段值小于给定值,则设为给定值
max如果字段值大于给定值,则设为给定值
rename字段重命名
数组push往数组尾部增加指定值
pop从数组尾部删除一个元素
shift从数组头部删除一个元素
unshift往数组头部增加指定值
addToSet原子操作,如果不存在给定元素则添加元素
pull剔除数组中所有满足给定条件的元素
pullAll剔除数组中所有等于给定值的元素

云数据库操作代码模板:

1. get模板

db.collection('test')
  .where({
    price: _.gt(10)
  })
  .field({
    name: true,
    price: true,
  })
  .orderBy('price', 'desc')
  .skip(1)
  .limit(10)
  .get()

2. aggregate模板

db.collection('test')
  .aggregate()
  .group({
    // 按 category 字段分组
    _id: '$category',
    // 每组有一个 avgSales 字段,其值是组内所有记录的 sales 字段的平均值
    avgSales: $.avg('$sales')
  })
  .end()

3. add模板

db.collection('test')
  .add({
    data: [
      {
        _id: 'apple-1',
        name: 'apple',
        category: 'fruit',
        price: 10,
      },
      {
        _id: 'orange-1',
        name: 'orange',
        category: 'fruit',
        price: 15,
      },
      {
        _id: 'watermelon-1',
        name: 'watermelon',
        category: 'fruit',
        price: 20,
      },
      {
        _id: 'yaourt-1',
        name: 'yaourt',
        category: 'dairy',
        price: 8,
      },
      {
        _id: 'milk-1',
        name: 'milk',
        category: 'dairy',
        price: 12,
      },
      {
        _id: 'chocolate-1',
        name: 'Lindt chocolate',
        category: 'chocolate',
        price: 16,
      },
    ]
  })

3. set模板

db.collection('test').doc('milk-1').set({
  data: {
    name: 'milk',
    category: 'dairy',
    price: 18,
  }
})

4. count模板

db.collection('test')
  .where({
    price: _.gt(10)
  })
  .count()

5. collection.uodate模板

db.collection('test')
  .where({
    category: 'fruit'
  })
  .update({
    data: {
      price: _.inc(5)
    }
  })

6. doc.update模板

db.collection('test').doc('orange-1')
  .update({
    data: {
      price: _.inc(10)
    }
  })

7. remove模板

db.collection('test').doc('milk-1')
  .remove()

8. 变量声明模板

const serverDate = db.serverDate
const { Point } = db.Geo
db.collection('test').doc('milk-2').set({
  data: {
    name: 'milk 2',
    category: 'dairy',
    price: 20,
    updateTime: serverDate(),
    origin: Point(120, 48)
  }
})

9. 正则表达式查询模板

db.collection('table')
  .where({
    collegeName: db.RegExp({
      regexp: 'string',   // 正则表达式
        // i:大小写不敏感  m:跨行匹配 s:让.可以匹配包括换行符在内的所有字符
      options: 'i|m|s', 
    })
  }).get()

10. 多表联查

db.collection('table1')
.aggregate()
.sort({'字段': -1})   //-1:降序  1:升序
.match({
    查询条件
  }).lookup({
      from: 'table2',
      localField: '当前表连接字段',
      foreignField: '对应表外键字段',
      as: '别名'
    }).end()

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐