云函数中:
请哪位大神帮忙看一下:第一行筛选条件与第二条筛选条件,只能是第一行起作用,为什么不能同时起作用?
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
var $ = cloud.database().command.aggregate //定义聚合操作符
// 使用操作符
let db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
const key = event.key
const city = "shanghai"
return cloud.database().collection("hotvideo").aggregate()
.match(
{'city':city,'publish':true},//这一行的筛选条件
$.or([//这是第二行筛选条件
{
Keywords: $.in([
db.RegExp({
regexp: '.*' + key,
options: 'i',
})
])
},
{
title: db.RegExp({
regexp: '.*' + key,
options: 'i',
})
}
])
)
.lookup({
from:"yuanshi_users",
localField: '_openid',
foreignField: '_openid',
as: 'publish'
})
.project({
//project把指定的字段传递给下一个流水线,指定的字段可以是某个已经存在的字段,也可以是计算出来的新字段
publish: 0
})
.end({
success:function(res){
return res;
},
fail(error) {
return error;
}
})
}
col.where(_.and([{ _openid: this.openid, }, _.or([{ number: db.RegExp({ regexp: this.data.inputVal, options: 'i', }) }, { title: db.RegExp({ regexp: this.data.inputVal, options: 'i', }) }, ]) ]))
这是我运行正常的代码,仅供参考。
.match(
$.and([
{'city':event.city,'publish':true},
$.or([
{
keyword: $.in([
db.RegExp({
regexp: '.*' + key,
options: 'i',
})
])
},
{
title: db.RegExp({
regexp: '.*' + key,
options: 'i',
})
},
{
type: $.in([
db.RegExp({
regexp: '.*' + key,
options: 'i',
})
])
}
])
])
)