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
- 阅读:440
产品分类: 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数据库实例,且无语法兼容性问题,非常适合想要高性能、高可用的业务场景使用。