mongodb增加新字段报错解决方法

it2025-01-13  2

今天想在项目的一个集合里增加一个新字段

db.article.update({},{$set:{status:0}},{multi:true}) multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

执行报错

WriteResult({

  "nMatched" : 0,

  "nUpserted" : 0,

  "nModified" : 0,

  "writeError" : {

    "code" : 10003,

    "errmsg" : "Cannot change the size of a document in a capped collection: 39 != 55"

  }

})

限制大小的集合不能增加字段。在网上找解决方法,执行以下脚本,

创建新集合,把原集合的文档查出来,加上新字段循环插入新集合。然后删除旧集合。然后把新集合重命名为旧集合。代码如下。

db.createCollection('article_temp',{capped:true,size:10737418240,max:100000}) var cur = db.article.find() while(cur.hasNext()){ item = cur.next(); if(item.status == null){ item.status = 0 } db.article_temp.insert(item) } db.article.drop() db.article_temp.renameCollection('article')

参考文章:https://www.solidsyntax.be/2016/03/26/MongoDB-Cannot-change-the-size-of-a-document-in-a-capped-collection/

转载于:https://www.cnblogs.com/funnyway/p/9962274.html

最新回复(0)