数据结构如图:
注:商品表goods包含两个对象,对应category_name字段“新品”和“轻奢”。字段category_good是一个数组。里面包含3个对象的商品信息。
需求:前端通过用户输入的内容text,模糊查询category_good里面desc字段或者title字段包含text的数据。例如:用户输入”描述“两个字,
应该给我返回新品里面下标为0和1这两条数据,而不是整个新品里面三条数据都给我返回了。
exports.main = async (event, context) => {
return await db.collection('goods').where({
'category_good.desc':db.RegExp({
regexp: '描述',
options: 'i',
})
}).get()
}
返回结果:
理想结果应该是新品只匹配中两条,显然不符。
exports.main = async (event, context) => {
return await db.collection('goods').aggregate()
.project({
category_good: $.filter({
input: '$category_good',
as: 'item',
cond: $.eq(['$$item.desc',"我是描述"])
})
})
.end()
}
返回结果:
结果是对的,但是这样写只能匹配相等的,不能做模糊查询。另外能不能把返回的结果全放在一个数组里,而不是这种数组里面有对象,对象里面又有数组
请问最后实现了吗?怎么实现的?谢谢。