Mongodb 如何丢弃抛出错误的记录?
我有一个MongoDB查询,我希望查询在出现一个错误后继续并跳过该记录 我得到以下错误: 错误:getMore命令失败:{ “操作时间”:时间戳(1547144095335), “ok”:0, “errmsg”:“未能分析$convert中的objectId“”,没有onError值:>解析为OID的字符串长度无效,应为24,但找到0”, “代码”:241, “代码名”:“转换失败”, “$clusterTime”:{ “clusterTime”:时间戳(1547144095335), “签字”:{ “散列”:BinData(0,“aMqO7W+xnEbbUw6UsX/cxr2jxzo=”), “keyId”:数字长(“6626865028530176001”) } } }Mongodb 如何丢弃抛出错误的记录?,mongodb,Mongodb,我有一个MongoDB查询,我希望查询在出现一个错误后继续并跳过该记录 我得到以下错误: 错误:getMore命令失败:{ “操作时间”:时间戳(1547144095335), “ok”:0, “errmsg”:“未能分析$convert中的objectId“”,没有onError值:>解析为OID的字符串长度无效,应为24,但找到0”, “代码”:241, “代码名”:“转换失败”, “$clusterTime”:{ “clusterTime”:时间戳(1547144095335), “签字”
我不想修复这个错误,我只想忽略它并希望查询继续。有办法做到这一点吗?假设测试数据如下:
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
或表达式):
对事情就是这样。非常感谢!事情就是这样。非常感谢你