繁体   English   中英

关于删除文件的困惑 MongoDB Capped Collections

[英]Confusion About Deleting Documents in MongoDB Capped Collections

我希望弄清楚为什么我没有在 MongoDB 上限集合中看到我期望的内容。 根据文档

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

但是,从表面上看,我可以从我的上限集合中删除文档吗?

使用MongoDB 6.0.1

test> db.createCollection("cappyMcCapCap", { "capped": true, "size": 100000, "max": 100 } )
{ ok: 1 }

test> db.cappyMcCapCap.isCapped()
true

到目前为止一切顺利,现在我将插入两个文件:

test> db.cappyMcCapCap.insertOne({ "hat": "bowler" });
{
  acknowledged: true,
  insertedId: ObjectId("63a4c2dffe0ea68c13a8c265")
}

test> db.cappyMcCapCap.insertOne({ "hat": "newsboy" });
{
  acknowledged: true,
  insertedId: ObjectId("63a4c2e9fe0ea68c13a8c266")
}

然后删除两个文件中较新的一个:

test> db.cappyMcCapCap.deleteOne({ "hat": "newsboy" });
{ acknowledged: true, deletedCount: 1 }

哪个成功?

test> db.cappyMcCapCap.find();
[ { _id: ObjectId("63a4c2dffe0ea68c13a8c265"), hat: 'bowler' } ]

我似乎记得过去可能会出错,但我已经有一段时间没有尝试手动从上限集合中删除文档了。

那么该文档是否正确,还是我误解了什么?

更新


我也在 MongoDB 5.0.14中尝试过,结果相同(我可以删除文档)。

但是后来我尝试了 MongoDB 4.2.23并得到了:

... "errmsg" : "cannot remove from a capped collection: test.cappyMcCapCap"

正如我所料。 这似乎在最近的版本中发生了变化?

根据 MongoDB 论坛中的这篇帖子

我确实在内部复制并缩放了它。 我想通知你,MongoDB > 5.0取消了应用操作命令中删除操作的限制。

但是,我们似乎还没有将其添加到文档中。 我已经提交了一份内部票证来更新文档以反映这一点以避免混淆。

因此,对于 MongoDB 5.0及更高版本,您现在可以从上限集合中删除文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM