云数据库:

云数据库提供高性能的数据库写入和查询服务。通过腾讯云开发(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

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

更多推荐