如我的数据库里有字段A,B,C,D,E 5个字段,我从本地上传2个参数,参数1是:cloud_serach;参数2是cloud_fenlei
想要实现的功能是,参数1 cloud_serach 与字段A,B,C,D中任一字段匹配就可以,相当于or,同时满足条件是:参数2 cloud_fenlei与E字段匹配,相当于and,
请问这个语句怎么写呢,我的如下写法,每次查询出来的都是数据库里所有的数据,
const db = cloud.database()
var _ = db.command
console.log('event.serach,cloud_fenlei',event.cloud_serach,event.cloud_fenlei,)
let count = await db.collection('abc')
.where(
_.or([
{ A: _.event.cloud_serach,
},
{ B: _.event.cloud_serach,
},
{ C: _.event.cloud_serach,
},
{ D: _.event.cloud_serach,
},
_.and([
{ E: event.cloud_fenlei,
},
])
])
)
.count()
count = count.total
console.log('count',count)
let all = []
let list=[]
for (let i = 0; i < count; i += 100) { //自己设置每次获取数据的量
list = await db.collection('abc').skip(i).get()
all = all.concat(list.data);
}
return all;
楼主,我也遇到过这样的问题,你把where中的查询语句改了一下就好了
where(
_.and([
_.or([
{
A: _.event.cloud_serach,
},
{
B: _.event.cloud_serach,
},
{
C: _.event.cloud_serach,
},
{
D: _.event.cloud_serach,
},
{
E: event.cloud_fenlei,
},
])
)
你照着文档例子拼起来试一试就知道了。
例子数据
查询结果
let count = await db.collection('abc')
.where(
_.or([
{ A: _.event.cloud_serach,
},
{ B: _.event.cloud_serach,
},
{ C: _.event.cloud_serach,
},
{ D: _.event.cloud_serach,
},
_.and([
{ E: event.cloud_fenlei,
},
])
这种云函数的查询,写法对吗?
参数1与ABCD中的任一个进行查找,同时参数2与E进行查找