用户2845399
用户2845399
  • 发布:2025-06-27 16:51
  • 更新:2025-06-27 17:47
  • 阅读:29

【报Bug】新建的服务空间clientDB无法运行aggregate函数,老服务空间可以,如何解决?

分类:uniCloud

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

示例代码:
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()

操作步骤:

直接运行上面的代码

预期结果:

正常的结果

实际结果:
{  
    "errMsg": "not support",  
    "errCode": "SYSTEM_ERROR",  
    "code": "SYSTEM_ERROR",  
    "requestId": "xxxx"  
}

bug描述:

在老服务空间上运行的代码,放到新服务空间上运行,报SYSTEM_ERROR,errMsg="not support"。
经过单独的JQL文件测试,match阶段没问题,使用到了objectToArray函数就报错了。
我在老服务空间上的项目,要迁移到新服务空间上,这样直接导致项目的部分功能无法使用了。


不止objectToArray,fliter也不行。

2025-06-27 16:51 负责人:无 分享
已邀请:
DCloud_uniCloud_VK

DCloud_uniCloud_VK

此语句已反馈给支付宝云,但此语句为复杂聚合语句,可能无法支持

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

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

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

目前现状(2025-06)

  • 逐步修复:​​支付宝云团队正在持续修复语法兼容性问题
  • 架构限制:由于底层数据库架构差异,​​无法实现100%兼容所有MongoDB语法​​,尤其是复杂的聚合查询语句

支付宝云优势

  • 支付宝云函数在​​响应速度​​和​​IP防刷​​等能力上具有明显优势

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

要回复问题请先登录注册