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
支付宝云数组字段的查询需要先添加 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: 好的吧…谢谢啦

