MongoDB聚合$merge恢复归档数据报错:Document does not contain key coll
排查MongoDB归档恢复时「Document does not contain key coll」错误
针对你执行聚合恢复数据时出现的错误,从以下几个方向排查:
- 替换占位符为实际值:语句里的
<collection>是占位符,必须替换成目标Atlas集群中要写入的实际集合名称,保留占位符会导致MongoDB无法识别目标集合,直接触发该错误。 - 核对版本兼容性:使用
$merge跨集群写入Atlas的功能要求归档数据库和目标集群的MongoDB版本至少为4.2,且两者版本差异不能过大,版本不兼容会导致字段解析逻辑异常。 - 校验参数与权限:确认
projectId、clusterName、db这些参数拼写完全正确,同时执行聚合的账号需要拥有归档库的读权限,以及目标集群对应库和集合的写权限。 - 简化语句测试:先移除
$sort阶段,只运行$merge部分,排查是否是排序阶段干扰;或者改用$out语句测试基础连接和参数是否正常。
修正后的示例代码(替换所有占位符):
db.actual_archive_collection.aggregate([ { $sort: { "_id": 1 } }, { "$merge": { "into": { "atlas": { "projectId": "your-real-project-id", "clusterName": "your-target-cluster", "db": "target-db-name", "coll": "target-collection-name" } }, "on": [ "internalId" ], "whenMatched": "keepExisting", "whenNotMatched": "insert" } } ])
内容的提问来源于stack exchange,提问作者PushpikaWan
相关产品推荐
相关产品推荐

