局部更新
const db = cloud.database()
const oras = db.collection("oras")
//callback风格
oras.doc('记录id').update({
data: { // data 传入需要局部更新的数据
done: true
},
success: function(res) {
console.log(res.data)
}
})
oras.doc('记录id').update({
data: {
done: true
},
}).then(res=>{
console.log("更新成功", res)
}).catch(err=>{
console.log("更新失败", err)
})
实例:
//小程序端
onLoad: function (options) {
//拿到数据库的引用
const db = wx.cloud.database()
//拿到集合的引用
const oras = db.collection("oras")
//局部更新 通过记录id指明更新哪一条数据
oras.doc("记录id").update({
data: {
age: 20
}
}).then(res=>{
console.log("更新成功", res)
}).catch(err=>{
console.log("更新失败", err)
})
}
整条更新
set 方法会替换更新整条记录。
注意:如果指定 ID 的记录不存在,则会自动创建该记录,该记录将拥有指定的 ID
oras.doc('记录id').set({
data: {
age: 18
}
}).then(res=>{
console.log("更新成功", res)
}).catch(err=>{
console.log("更新失败", err)
})
实例:
小程序端
//实例1
onLoad: function (options) {
//拿到数据库的引用
const db = wx.cloud.database()
//拿到集合的引用
const oras = db.collection("oras")
oras.doc("记录id").set({
data: {
age: 18
}
}).then(res=>{
console.log("更新成功", res)
}).catch(err=>{
console.log("更新失败", err)
})
}
//实例2
onLoad: function (options) {
const db = wx.cloud.database()
const oras = db.collection("oras")
oras.doc("记录id").set({
data: {
age: 18
}
}).then(res=>{
console.log("更新成功", res)
}).catch(err=>{
console.log("更新失败", err)
})
}
//实例3:记录id不存在,会以此条id增加一条记录
onLoad: function (options) {
const db = wx.cloud.database()
const oras = db.collection("oras")
oras.doc("记录id").set({
data: {
age: 18
}
}).then(res=>{
console.log("更新成功", res)
}).catch(err=>{
console.log("更新失败", err)
})
}
批量更新
需在 Server 端进行操作(云函数)。
方法:
- 方法1:在 where 语句后调用 update 方法
- 方法2:用for循环整条更新达到批量更新的目的:
- 缺点:性能就比较低,因为它涉及多次数据库的操作,没有方法1的性能优
实例:把age>=18的记录添加一个字段
exports.main = async (event, context) => {
const db = wx.cloud.database() //拿到数据库的引用
const oras = db.collection("oras") //拿到集合的引用
const _ = db.command //数据库操作符。也就是数据库里面的一些指令
//获取多条记录
return oras.where({
age: _.gte(18) //command.gte查询筛选操作符,表示需大于或等于指定值
}).update({
data: {
adult: true
}
})
}
指令
set 设置字段为指定值 -->用于控制字段值是一个对象,想修改对象内的某个key
remove 删除字段
inc 原子自增字段值
mul 原子自乘字段值
push 如字段值为数组,往数组尾部增加指定值
pop 如字段值为数组,从数组尾部删除一个元素
shift 如字段值为数组,从数组头部删除一个元素
unshift 如字段值为数组,往数组头部增加指定值
实例:
db.command.ind() 自增指令
//小程序端
func(){
const db = wx.cloud.database() //拿到数据库的引用
const oras = db.collection("oras") //拿到集合的引用
oras.doc("记录id").set({
data: {
age: db.command.inc(1) //自增1 age++
}
}).then(res=>{
console.log("yes")
}).catch(err=>{
console.log("no")
})
}
//db.command.ind()仅适用于局部更新,用set就不行
db.command.mul() 自乘指令
oras.doc("记录id").set({
data: {
age: db.command.mul(10) //age*10
}
}).then(res=>{
console.log("yes")
}).catch(err=>{
console.log("no")
})
db.command.push()
//要求:往[1, 2]数组里面追加一个3
//第一步:新增字段tags
oras.doc("记录id").update({
data: {
tags: [1, 2]
}
}).then(res=>{
console.log("yes")
}).catch(err=>{
console.log("no")
})
//第二部:追加3
oras.doc("记录id").update({
data: {
tags: db.command.push(3)
}
}).then(res=>{
console.log("yes")
}).catch(err=>{
console.log("no")
})