通过db.command获取
const db = wx.cloud.database(); const _ = db.command; //属性一、command的比较操作符
- eq 等于
- neq 不等于
- lt 小于
- lte 小于等于
- gt 大于
- gte 大于等于
- in 要求在数组内的
- nin 要求不在数组内的
以下例子中,hist是一个表示点击次数的变量
getData(){
db.collection("demolist")
.where({
hist:_.eq(12) //查询点击次数为12的数据,neq同理
})
.get()
.then(res=>{
console.log(res)
//渲染到前端
this.setData({
dataList:res.data
})
})
},
in和nin要求值在给定的数组内
.where({
hist:_.in([12,55]) //查询点击次数为12和55的数据
})
注意: in、nin里的数组不是范围,是精确
需要传入多个查询操作符或常量,表示字段需满足或匹配给定的条件。
eg:hist字段值大于20且小于30
.where({
hist:_.and(_.gt(20),_.lt(30)) //第一种方法
// hist:_.gt(20).and(_.lt(30)) 第二种方法
})
eg:hist字段值大于20或小于30
.where({
hist:_.or(_.gt(20),_.lt(30))
})
2、查询多个字段
eg:查询hist小于12或作者是"腾讯新闻"的数据
.where(_.or([
{hist:_.lt(12)},
{author:"腾讯新闻"}
]))
(3)not和nor
三、查询字段操作符 (1)exists
判断字段是否存在
eg:找出存在 hist点击次数 字段的数据
.where({
hist:_.exists(true)
})
(2)mod
给定除数和余数,要求字段作为被除数
eg:找出点击次数为10的倍数的记录
.where({
hist:_.mod(10,0)
})
四、数组操作符 (1)all
找出tabs数组字段中同时包含“落马”,“贪污”的记录
.where({
tabs:_.all(["落马","贪污"])
})
结果:
针对数组是对象数组的情况下。要求数组中至少包含一个满足elemMatch给定的所有条件的元素。
eg:假设集合示例数据如下:
{
"id":"a",
"city":"x0",
"places":[{
"type":"garden",
"area":300,
"age":1
}]
"id":"b",
"city":"y0",
"places":[{
"type":"theatre",
"area":50,
"age":15
}
找出 places 数组字段中至少同时包含一个满足“area大于100 且 age小于2”的元素
const _ = db.command
db.collection("todos").where({
places:_.elemMatch({
area:_.gt(100),
age:_.lt(2)
})
})
.get()
(3)size
用于数组字段的查询筛选条件,要求数组长度为给定值
eg:找出tabs数组字段长度为2的所有记录
.where({
tabs:_.size(2)
})
五、更新操作符(和upDate配合)
涉及到权限问题,控制台添加的数据只能控制台操作
- inc 自增
- mul 自乘
- remove 用于删除某一字段
- rename
- set 跟upDate差不多,但是set能覆盖原来数据
- push 如字段值为数组,往数组尾部增加指定值
- pop 如字段值为数组,从数组尾部删除一个元素
- shift 如字段值为数组,从数组头部删除一个元素
- unshift 如字段值为数组,往数组头部增加指定值
- pull 移除指定元素
.doc("id")
.update({
data:{
hist:_.inc(-6)
//负号自-6 正好自+
}
})
remove
.update({
data:{
hist:_.remove()
//删除hist这个字段
}
})
set
比如,原本有style:{color:red,size=bigger}
执行完set更新数据后
.update({
data:{
style:_.set({
color:"blue"
})
}
})
结果:style:{color:bule}
而如果仅仅只update
.update({
data:{
style:{
color:"blue"
}
}
})
结果:style:{color:blue,size=bigger}
注意:如果指定 ID 的记录不存在,则会自动创建该记录,该记录将拥有指定的 ID。
.update({
data:{
tabs:_.push(["财经"])
//尾部添加元素
tabs:_.unshift(["财经"])
//向头部添加元素
}
})
若本身没有数组,push可以添加,例如,可以给数据里添加一个字段list,数组元素是“aa”,“bb”
.update({
data:{
list:_.push(["aa","bb"])
//添加数组
}
})
另外,push也可以在指定位置上添加元素,需要往里面传递一个对象。比如要从第二个位置开始插入,指定position=1
(小程序数组下标从0开始)
.update({
data:{
tabs:_.push({
each:["财经"],
position:1
})
}
})
pop、shift
data:{
tabs:_.pop()
//尾部元素被删除
tabs:_.shift()
//删除第一个元素
}
pull
data:{
tabs:_.pull("数码")
//删除了 数码 这个元素
}



