Mongodb 忽略updateMany()中的错误,如ordered:false
我的MongoDB中有大约500k条记录,我必须用一个标志更新每个文档 我的问题是这样的:Mongodb 忽略updateMany()中的错误,如ordered:false,mongodb,Mongodb,我的MongoDB中有大约500k条记录,我必须用一个标志更新每个文档 我的问题是这样的: db.table.updateMany( {}, { $set: { my_custom_flag: 1 } } ); 但是很少有超过16MB的文档,由于MongoDB 16MB的限制,我无法更新这些文档 上述查询引发错误,并中断整个操作,即无法更新其余文档 是否有任何方法可以抑制错误并继续操作?或者我得到超过16MB的文档的文档id { "
db.table.updateMany(
{},
{
$set: {
my_custom_flag: 1
}
}
);
但是很少有超过16MB的文档,由于MongoDB 16MB的限制,我无法更新这些文档
上述查询引发错误,并中断整个操作,即无法更新其余文档
是否有任何方法可以抑制错误并继续操作?或者我得到超过16MB的文档的文档id
{
"message": "Resulting document after update is larger than 16777216",
"name": "WriteError",
"code": 17419,
"index": 0,
"errmsg": "Resulting document after update is larger than 16777216"
}
EDIT:bulkWrite()
与ordered:false
一起使用时仍会抛出相同的错误,其他文档不会更新。
我不明白为什么这个问题被标记为重复
注意:我不希望使用GridFS的。这是所有语言API的共同点。事实上,“everything”实际上使用的是“BulkAPI”,设置的实际位置是。我尝试用bulkWrite()实现这一点,但我的操作仍然在16MB错误处中断。有解决方案吗?我遇到了类似的问题,尝试使用insert_many插入并将ORDERSED设置为False,但仍然得到BSON doc太大的错误。否则我可能会遍历单个文档,因为这不是一个常规操作。嗨,达伦,我从来没有找到解决这个问题的方法。相反,我创建了一个for循环,首先获取该特定集合的所有
\u id
。然后为每个\u id
db.table.bulkWrite([{updateOne:{filter:{{u id:1},update:{my_custom_flag:1}}},{updateOne:{…},{…},{…},{…},{ordered:false})编写一个更新命令代码>使用ordered:false
帮助我在不中断循环的情况下进行更新