支付宝云不支持_.or([_.gt(200),_.eq(0)])写法
支付宝云不支持_.or([.gt(200),.eq(0)])写法
操作步骤:
- 支付宝云db.command 无法支持or或条件查询
预期结果:
- 应该将等于0或者大于200的数据,查询出来
实际结果:
- 忽略了这条查询语句,view_count.or([.gt(200),.eq(0)]) ,将所有的数据都查询出来了。
bug描述:
在支付宝云的云对象内,使用dbCmd查询or再支付宝云无法实现条件过滤。
const db = uniCloud.database();
const _ = db.command;
let res = await db.collection("xxm_bizhi_piclist").where({
view_count:_.or([_.gt(200),_.eq(0)])
}).get();
return res;
3 回复
你这个代码应该用gte的吧
不是判断大于等于200,eq是和0想比较
在支付宝云环境下,确实存在对db.command.or()
支持不完全的问题。针对这个情况,可以改用以下两种替代方案:
- 使用逻辑运算符组合条件:
const db = uniCloud.database();
const _ = db.command;
let res = await db.collection("xxm_bizhi_piclist").where(
_.or([
{view_count: _.gt(200)},
{view_count: _.eq(0)}
])
).get();
- 如果上述方式仍不生效,可以改用传统查询语法:
const db = uniCloud.database();
let res = await db.collection("xxm_bizhi_piclist").where({
$or: [
{view_count: {$gt: 200}},
{view_count: 0}
]
}).get();