var book_id = "bookid1"
var bookdetail_id = "123"
var $ = db.command.aggregate
dbb.aggregate().match({
_id: book_id
}).project({
_id: false,
"bookIds": true,
"bookDetailArray": $.objectToArray("$bookDetails"),
}).project({
"bookIds": true,
"booked": $.filter({
input: "$bookDetailArray",
as: "item",
cond: $.neq(["$$item.v.open", false])
}),
"info": $.filter({
input: "$bookDetailArray",
as: "item",
cond: $.eq(["$$item.k", bookdetail_id])
})
}).project({
"bookIds": true,
"booked": $.map({
input: "$booked",
as: "item",
in: "$$item.k"
}),
"info": true
}).project({
"bookIds": $.filter({
input: "$bookIds",
as: "item",
cond: $.in(['$$item', '$booked'])
}),
"info": true,
}).project({
"included": $.in([bookdetail_id, "$bookIds"]),
"rank": $.indexOfArray(["$bookIds", bookdetail_id]),
"info": true
}).end()

用户2845399
- 发布:2025-06-27 16:51
- 更新:2025-06-27 17:47
- 阅读:29
产品分类: uniCloud/支付宝小程序云
示例代码:
操作步骤:
直接运行上面的代码
直接运行上面的代码
预期结果:
正常的结果
正常的结果
实际结果:
{
"errMsg": "not support",
"errCode": "SYSTEM_ERROR",
"code": "SYSTEM_ERROR",
"requestId": "xxxx"
}
{
"errMsg": "not support",
"errCode": "SYSTEM_ERROR",
"code": "SYSTEM_ERROR",
"requestId": "xxxx"
}
bug描述:
在老服务空间上运行的代码,放到新服务空间上运行,报SYSTEM_ERROR,errMsg="not support"。
经过单独的JQL文件测试,match阶段没问题,使用到了objectToArray函数就报错了。
我在老服务空间上的项目,要迁移到新服务空间上,这样直接导致项目的部分功能无法使用了。
不止objectToArray,fliter也不行。
1 个回复
DCloud_uniCloud_VK
此语句已反馈给支付宝云,但此语句为复杂聚合语句,可能无法支持
支付宝云空间以2024年11月起为分割线,之前创建的内置数据库正常,之后创建的则可能出现语法兼容性问题。
这是因为:2024年11月后,支付宝云将内置数据库更换为兼容部分MongoDB语法的自研数据库(源于支付宝内部战略调整)
因此,从老空间迁移数据到新空间时,部分数据库操作代码可能需要进行调整以绕过兼容性问题
目前现状(2025-06)
支付宝云优势
为了彻底解决支付宝云新空间内置数据库的兼容问题,DCloud专门推出扩展数据库服务,扩展数据库底层是独立的原生MongoDB数据库实例,且无语法兼容性问题,非常适合想要高性能、高可用的业务场景使用。