我正在为我的新项目学习mongoDB。我创建了一个上限集合,但是当我尝试从下面的mongoDB中的capped集合中删除文档时出现错误,
db.mycol.remove({" _id":的ObjectId(" 57bef716e5ff2cbb540e403b")})
写结果({ " nRemoved" :0, " writeError" :{ "代码" :20, " ERRMSG" :"无法从上限集合中删除:mytestdb.myc 醇" } })
请帮助我。
提前谢谢。!
答案 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)
您无法从有上限的收藏夹中删除文档。
如果您的业务逻辑要求从加盖的集合中删除项目,则可以将其标记为已删除(逻辑删除添加一个布尔字段)
几年前,我们实施了这个队列。如今,我们改用卡夫卡了。