我正在使用 Mongo 的更新功能从匹配特定条件的 25 条记录中翻转一个简单的标志。该数据库包含 5000 万条记录。
匹配标准:
{ 'profile_merge.success': false, 'profile_merge.http_status': 500 }
更新声明:
{
"$set":{
"profile_merge.processed":false
}
}
此操作失败,并显示消息:“多重规划器选择最佳计划时发生错误::由于::操作超出了时间限制”(请参阅随附的屏幕截图)。该消息立即出现,因此似乎没有达到任何时间限制。
错误来自多重规划器 - 服务器端(mongodb)而不是clinetside(compass)上的查询规划器。
查询规划器的截止日期非常严格(以毫秒为单位)——对于您来说,这似乎是即时的,但在这一瞬间,服务器上发生了很多戏剧性的事情。查询规划器获得了查询优化的所有可能组合,在短时间内运行所有这些组合,计算每个计划返回多少结果以选择最佳的结果。
该错误表明所有计划未能返回至少 1 个结果,并且引擎拒绝运行查询。