[英]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.