uni-app 支付宝云查询字段为array的字段BUG

uni-app 支付宝云查询字段为array的字段BUG

产品分类:
uniCloud/支付宝小程序云

操作步骤:

 arr:[{  
    name: 'item-1',  
  },{  
    name: 'item-2',  
  }]  

{  
  arr:[{  
    name: 'item-3',  
  },{  
    name: 'item-4',  
  }]  
}  
const res = await db.collection('test').where({
'arr.0.name': 'item-1'
})
这个代码可以正常查询第一个位置如果为item-1就返回预期值
const res = await db.collection('test').where({
'arr.name': 'item-1'
})
这样就不行了 阿里云OK 支付宝云不行

### 预期结果:
```md
const res = await db.collection('test').where({
'arr.0.name': 'item-1'
})
这个代码可以正常查询第一个位置如果为item-1就返回预期值
const res = await db.collection('test').where({
'arr.name': 'item-1'
})
这样就不行了 阿里云OK 支付宝云不行

### 实际结果:
```md
const res = await db.collection('test').where({
'arr.0.name': 'item-1'
})
这个代码可以正常查询第一个位置如果为item-1就返回预期值
const res = await db.collection('test').where({
'arr.name': 'item-1'
})
这样就不行了 阿里云OK 支付宝云不行

### bug描述:
```md
官方自己文档里支付宝云都复现不了 阿里云可以正常使用 就是arr.0.name可作为条件可以查询 arr.name就不行了


更多关于uni-app 支付宝云查询字段为array的字段BUG的实战教程也可以访问 https://www.itying.com/category-93-b0.html

14 回复

支付宝云数组字段的查询需要先添加 array 类型的索引,你先添加完再试试

更多关于uni-app 支付宝云查询字段为array的字段BUG的实战教程也可以访问 https://www.itying.com/category-93-b0.html


您好 添加以后还是不可以 我重新建立了一个表 添加好array的索引后也不可以…

回复 x***@163.com: 我在楼下贴了控制台的索引和数据库的数据结构,请帮忙看看 感谢

请帮忙看看 这样设置是否正确

索引字段只设置 bom,即bom字段为array索引试试

回复 DCloud_uniCloud_VK: 试了 不行。您看下方便在支付宝云复现一下吗

回复 x***@163.com: 支付宝云确实有兼容性问题

支付宝云空间以2024年11月起为分割线,之前创建的内置数据库正常,之后创建的则可能出现语法兼容性问题。

这是因为:2024年11月后,支付宝云将内置数据库更换为兼容部分MongoDB语法的​​自研数据库​​(源于支付宝内部战略调整)

因此,从老空间迁移数据到新空间时,部分数据库操作代码可能需要进行调整以绕过兼容性问题

目前现状(2025-09)

支付宝云优势

为了彻底解决支付宝云新空间内置数据库的兼容问题,DCloud专门推出​​扩展数据库​​服务,扩展数据库底层是独立的原生MongoDB数据库实例,且无语法兼容性问题,非常适合想要高性能、高可用的业务场景使用。

回复 DCloud_uniCloud_VK: 好的吧…谢谢啦

回到顶部