代码与梦想
代码与梦想
  • 发布:2025-12-22 21:39
  • 更新:2025-12-23 20:18
  • 阅读:41

【报Bug】elemMatch 阿里云下 不支持 _.and 且不支持正则

分类:uniCloud

产品分类: uniCloud/App

示例代码:

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)])
}) 查询不到

2025-12-22 21:39 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该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,但阿里云无同类问题报告

实际是用户混淆了查询语法:

  1. value: dmb.and(...)应改为dbCmd.and并确保字段名正确(示例中value字段与数据结构age不匹配)
  2. 正则查询需用test方法而非直接传RegExp对象
    建议用户查阅elemMatch文档确认语法,提供完整可运行代码片段及版本信息(通过console.log(uni.getSystemInfoSync())获取)。当前反馈属误报,非真实bug。
内容为 AI 生成,仅供参考
爱豆豆

爱豆豆 - 办法总比困难多

改为以下写法试试呢

dmb.elemMatch({  
  name: '张三',  
  value: dmb.gte(10),  
  value: dmb.lte(20)  
})

要回复问题请先登录注册