从mongoDB中的capped集合中删除文档时,是否会发生错误?

从mongoDB中的capped集合中删除文档时,是否会发生错误?,mongodb,Mongodb,我正在为我的新项目学习mongoDB。我创建了一个capped集合,但在尝试从mongoDB中的capped集合中删除文档时出错,如下所示 db.mycol.remove({“_id”:ObjectId(“57bef716e5ff2cbb540e403b”)}) 书面结果({ “未删除”:0, “writeError”:{ “代码”:20, “errmsg”:“无法从封顶集合中删除:mytestdb.myc” ol“ } }) 请帮我解决这个问题 提前谢谢你 Capped集合不支持删除文档,并且

我正在为我的新项目学习mongoDB。我创建了一个capped集合,但在尝试从mongoDB中的capped集合中删除文档时出错,如下所示

db.mycol.remove({“_id”:ObjectId(“57bef716e5ff2cbb540e403b”)})

书面结果({ “未删除”:0, “writeError”:{ “代码”:20, “errmsg”:“无法从封顶集合中删除:mytestdb.myc” ol“ } })

请帮我解决这个问题


提前谢谢你

Capped集合不支持
删除
文档,并且也没有其他文档可以使它们在Capped用例中运行

您不能从封顶集合中删除文档。删除所有 如果要删除集合中的文档,请使用drop()方法删除 收藏


请查看文档:

“文件删除

您无法从封顶集合中删除文档。若要从集合中删除所有文档,请使用drop()方法删除集合并重新创建封顶集合。“

这意味着您需要删除整个集合,然后重新创建它。

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

此外,请通过以下命令检查您的收藏是否已加盖?

db.mycol.isCapped()
db.version()
通过以下命令检查您的MongoDB版本:

db.mycol.isCapped()
db.version()
[Solve] 创建一个没有封顶的新集合并复制所有文档

复制、替换集合名称并粘贴到终端中

// 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")
//替换为
db.createCollection(“mycol_temp”)
var cur=db.mycol.find()
while(cur.hasNext()){
mycol=cur.next();
数据库mycol_temp.insert(logItem);
}
db.mycol.drop()
数据库mycol_临时重命名收集(“mycol”)

现在,可以通过重新排列集合来接受update()或remove()文档。

您不能从封顶集合中删除文档

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


我们在几年前为一个队列实现了这一点。现在我们改用卡夫卡。

可能是重复的感谢@DhruvPathak的建议,这意味着如果我想执行任何删除或更新操作,那么我永远不会声明集合为上限,对吗?谢谢@Eve的宝贵建议。