当前位置: 首页 > 知识库问答 >
问题:

MongoDB,更新有上限的集合

龚浩宕
2023-03-14

有人知道在Mongo3中更新封顶收藏的方法吗。2.我让它在2分钟内工作。我更新了一个收藏,基本上删除了它的所有内容,所以我知道它已经被处理过了。这样就会过时。

当我在3.2中执行同样的操作时,我在命令行上会出现以下错误。

无法更改封顶集合中文档的大小:318!=40

在这里,你可以看到我正在将文档从318字节缩减到40字节。

有办法做到这一点吗?

共有3个答案

昌琪
2023-03-14

[解决]是和我一起工作

创建新的未封顶收藏并复制所有文档。

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

// 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()文档。

嵇弘新
2023-03-14

3.2中不再允许收缩有上限集合中的文档。我在留档中没有找到任何与此相关的东西,但https://jira.mongodb.org/browse/SERVER-20529有一个理由(基本上收缩文档不能回滚)

您唯一的选择是查找相同大小的更新,例如更新布尔值。

贲绪
2023-03-14

正如蒙古文档中提到的

在版本3.2中更改。

如果更新或替换操作更改了文档大小,操作将失败。

https://docs.mongodb.com/manual/core/capped-collections/

因此,您的操作正在更改上限集合的大小,这在mongodb 3.2中是不允许的

 类似资料:
  • (在mongo用户讨论组https://groups.google.com/d/topic/mongodb-user/i1ge4bNiMgM/discussion提问) 嗨,我想使用MongoDB作为消息队列,并考虑为此使用有上限的集合可定制游标。我知道可定制光标可用于按插入顺序访问文档,但是 我可以对光标使用任何排序顺序吗 谢谢

  • 我在数据库中有一个集合“documentDev ”,其切分关键字为“dNumber”样本文档: 如果我尝试使用任何查询工具更新这个文档,比如- 它会正确更新文档。但是如果我确实使用了Spring boot的mongorepository命令,如DocumentRepo.save(Object),它会引发异常 由以下原因引起:com.mongodb.MongoCommandException:命令失

  • 只有当新值不为null时,我才会更新集合设置值。我有这样一个代码: 有没有一个简单的方法可以做到这一点? 另一种方法:如果我可以从我获取数据的表单的占位符中获取值,我可以解决这个问题...但是这可能吗?

  • 主要内容:update() 方法,save() 方法在 MongoDB 中,可以使用 update() 和 save() 方法来更新集合中的文档。其中 update() 方法可以更新现有文档中的值,而 save() 方法则可以使用传入文档来替换已有文档。 update() 方法 update() 方法用于更新现有文档中的值,其语法格式如下: db.collection_name.update(     <query>,     <update>,

  • 我有一个类,其中包含一个

  • 我有两个收藏(A和B),每个收藏约70000份文档。如果我比较A和B,95%的文档是相同的,只有5%是不同的。每个文档的结构在A和B中完全相同。A是一个固定集合,B是一个临时集合。我想将B合并到A中。如果A中存在来自B的文档-- ...我正在使用Python驱动程序(如果有必要的话)。 最有效的方法是什么?非常感谢。