第一种写法:
const db = wx.cloud.database()
const _ = db.command
db.collection('vegetable_list').where({
list:{
kind:'根茎类'
}
}).get({
success: res => {
console.log("res:", res.data)
},
fail: err => {
console.log("error:", err)
}
})
第二种写法:
db.collection('vegetable_list').where({
list:_.elemMatch({
kind:'根茎类'
})
}).get({
})
都是全量返回,筛选条件没起作用!求官方同学尽快帮忙解决一下
能教教我你的数组是怎么加进数据库的吗拜托了
这个问题我解决了,在云函数端,不过解决得有点复杂。
const db = wx.cloud.database(); const _=db.command; const $ = db.command.aggregate; db.collection('xxx').aggregate() .project({ list: $.filter({ input: '$list', as: 'item', cond: $.eq(['$$item.kind','根茎类']) }) }).end({ success(res){ console.log(res) } });
这个可以 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/aggregate/AggregateCommand.filter.html
这是之前写的,没研究过elemMatch,你参考下
你要返回什么哦,按照你的条件,就是返回vegetable_list这个集合,所有包含list:{kind:'根茎类'}的记录,res.data是包含完整记录的数组,如果你要某个字段的内容,应该是这样res.data[0].list