当从mongoDB中的capped集合中删除文档时,它是通过错误吗?

时间:2016-08-30 06:30:25

标签: mongodb

我正在为我的新项目学习mongoDB。我创建了一个上限集合,但是当我尝试从下面的mongoDB中的capped集合中删除文档时出现错误,

  

db.mycol.remove({" _id":的ObjectId(" 57bef716e5ff2cbb540e403b")})

     

写结果({           " nRemoved" :0,           " writeError" :{                   "代码" :20,                   " ERRMSG" :"无法从上限集合中删除:mytestdb.myc   醇"           }   })

请帮助我。

提前谢谢。!

4 个答案:

答案 0 :(得分:1)

加盖的集合不支持remove个文档,并且还有其他几个restrictions也可以在封顶的用例中使它们具有高性能。

  

您无法从上限集合中删除文档。要删除所有   来自集合的文档,使用drop()方法删除   集合

答案 1 :(得分:1)

看一下文档:

"文件删除

您无法从上限集合中删除文档。要从集合中删除所有文档,请使用drop()方法删除集合并重新创建有上限的集合。"

这意味着你需要删除整个集合然后重新创建它。 https://docs.mongodb.com/manual/core/capped-collections/

答案 2 :(得分:0)

原因:您的Collection已封顶,无法执行此操作。详情:Restrictions

另外,请按以下命令检查收藏上限?

db.mycol.isCapped()

通过命令检查MongoDB版本:

db.version()

<强> [解决] 创建一个没有上限的新集合并复制所有文档。

复制,替换您的收藏品名称并粘贴到您的终端。

// replace <mycol> by <your collections name>
db.createCollection( "mycol_temp")
var cur = db.mycol.find()
while (cur.hasNext()) {
  mycol = cur.next();
  db.mycol_temp.insert(logItem);

} db.mycol.drop() db.mycol_temp.renameCollection( “mycol”)

现在,接受update()或remove()文档。

答案 3 :(得分:0)

您无法从有上限的收藏夹中删除文档。

如果您的业务逻辑要求从加盖的集合中删除项目,则可以将其标记为已删除(逻辑删除添加一个布尔字段)

几年前,我们实施了这个队列。如今,我们改用卡夫卡了。