支付宝云不支持_.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()支持不完全的问题。针对这个情况,可以改用以下两种替代方案:

  1. 使用逻辑运算符组合条件:
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();
  1. 如果上述方式仍不生效,可以改用传统查询语法:
const db = uniCloud.database();
let res = await db.collection("xxm_bizhi_piclist").where({
  $or: [
    {view_count: {$gt: 200}},
    {view_count: 0}
  ]
}).get();
回到顶部