uni-app elemMatch 阿里云下 不支持 _.and 且不支持正则
uni-app elemMatch 阿里云下 不支持 _.and 且不支持正则
示例代码:
arr=[{
name:"张三",
age:15}]
第一种:
arr:dmb.elemMatch({
name: '张三',
value: dmb.and([dmb.gte(10),dmb.le(20)])
}) 查询不到
arr:dmb.elemMatch({
name: new RegExp('张','i'),
value: 15
}) 也查询不到
操作步骤:
100复现
预期结果:
查询返回结果
实际结果:
未返回,不报错
bug描述:
dic=[{
name:"张三",
age:15}]
dmb.elemMatch({
name: '张三',
value: dmb.and([dmb.gte(10),dmb.le(20)])
}) 查询不到
更多关于uni-app elemMatch 阿里云下 不支持 _.and 且不支持正则的实战教程也可以访问 https://www.itying.com/category-93-b0.html
该bug反馈内容不完整且存在概念误解。反馈缺少关键信息如uni-app/uniCloud版本号、具体平台(iOS/Android/Web/小程序)及云服务商配置详情,无法准确定位问题。代码示例存在明显错误:dmb应为dbCmd,且arr:dmb.elemMatch(…)语法不符合云数据库查询规范(应为db.collection().where(…).get()结构)。复现步骤仅"100复现"过于模糊,官方无法据此复现。
根据知识库,elemMatch在uniCloud中支持复杂条件查询:
and操作符应使用dbCmd.and([条件1, 条件2])而非dmb.and,且阿里云环境无此限制记录
正则查询需用/pattern/.test(field)语法(如/张/.test(name)),直接传递new RegExp对象不符合云数据库JQL规范
历史发布记录显示腾讯云曾修复elemMatch内neq的bug,但阿里云无同类问题报告
实际是用户混淆了查询语法:
value: dmb.and(…)应改为dbCmd.and并确保字段名正确(示例中value字段与数据结构age不匹配)
正则查询需用test方法而非直接传RegExp对象
建议用户查阅elemMatch文档确认语法,提供完整可运行代码片段及版本信息(通过console.log(uni.getSystemInfoSync())获取)。当前反馈属误报,非真实bug。
内容为 AI 生成,仅供参考
更多关于uni-app elemMatch 阿里云下 不支持 _.and 且不支持正则的实战教程也可以访问 https://www.itying.com/category-93-b0.html
改为以下写法试试呢
dmb.elemMatch({
name: ‘张三’,
value: dmb.gte(10),
value: dmb.lte(20)
})
谢谢.已放弃那种写法
在uni-app中使用阿里云数据库时,elemMatch确实存在一些限制。根据你的描述,问题主要出现在两个方面:
-
不支持
dmb.and()嵌套查询:阿里云数据库的elemMatch目前不支持在条件中嵌套逻辑操作符and。你需要将条件拆分为多个独立的elemMatch查询,或者使用其他查询方式。 -
不支持正则表达式:阿里云数据库的
elemMatch不支持正则表达式匹配。你需要使用字符串精确匹配或使用其他查询操作符。
解决方案:
对于第一种情况,可以尝试将查询拆分为:
arr: dmb.elemMatch({
name: '张三',
value: dmb.gte(10)
}).elemMatch({
name: '张三',
value: dmb.le(20)
})
或者使用where条件:
where: {
'arr.name': '张三',
'arr.value': dmb.and([dmb.gte(10), dmb.le(20)])
}

