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