Mongodb 如何丢弃抛出错误的记录?

Mongodb 如何丢弃抛出错误的记录?,mongodb,Mongodb,我有一个MongoDB查询,我希望查询在出现一个错误后继续并跳过该记录 我得到以下错误: 错误:getMore命令失败:{ “操作时间”:时间戳(1547144095335), “ok”:0, “errmsg”:“未能分析$convert中的objectId“”,没有onError值:>解析为OID的字符串长度无效,应为24,但找到0”, “代码”:241, “代码名”:“转换失败”, “$clusterTime”:{ “clusterTime”:时间戳(1547144095335), “签字”

我有一个MongoDB查询,我希望查询在出现一个错误后继续并跳过该记录

我得到以下错误:

错误:getMore命令失败:{ “操作时间”:时间戳(1547144095335), “ok”:0, “errmsg”:“未能分析$convert中的objectId“”,没有onError值:>解析为OID的字符串长度无效,应为24,但找到0”, “代码”:241, “代码名”:“转换失败”, “$clusterTime”:{ “clusterTime”:时间戳(1547144095335), “签字”:{ “散列”:BinData(0,“aMqO7W+xnEbbUw6UsX/cxr2jxzo=”), “keyId”:数字长(“6626865028530176001”) } } }


我不想修复这个错误,我只想忽略它并希望查询继续。有办法做到这一点吗?

假设测试数据如下:

 db.things.insert([{ myfield: ObjectId()}, { myfield:  "Some text"}])
通过与要转换的值的预期值进行匹配,可以避免传递无效字段值:

db.things.aggregate([
    { $match: {
        myfield: { $type: "objectId" }
    }},
    { $addFields: {
        converted: {
            $convert: { 
                input: "$myfield",
                to: "objectId",
            }
        }
    }},
])
或者,您可以将
$convert
中的
onError
值设置为可以在聚合管道中使用的值(例如,使用
$match
或表达式):


假设测试数据如下:

 db.things.insert([{ myfield: ObjectId()}, { myfield:  "Some text"}])
通过与要转换的值的预期值进行匹配,可以避免传递无效字段值:

db.things.aggregate([
    { $match: {
        myfield: { $type: "objectId" }
    }},
    { $addFields: {
        converted: {
            $convert: { 
                input: "$myfield",
                to: "objectId",
            }
        }
    }},
])
或者,您可以将
$convert
中的
onError
值设置为可以在聚合管道中使用的值(例如,使用
$match
或表达式):


对事情就是这样。非常感谢!事情就是这样。非常感谢你