mongodb - MongoDB中的自然顺序是否稳定?
问题描述
MongoDB 文档https://docs.mongodb.com/manual/reference/glossary/#term-natural-order将自然顺序定义为
数据库引用磁盘上文档的顺序。这是默认的排序顺序。
此外,这里https://docs.mongodb.com/manual/reference/method/cursor.sort/#return-natural-order它说如下:
此排序是内部实现功能,您不应依赖其中的任何特定结构。
那么,在以下情况下,自然排序会发生变化吗?
- 正常操作:压缩、复制、备份/恢复、从健康的副本引导节点
- 存储引擎升级
- 还有什么?
我的意思是,如果一个查询没有指定排序(或请求$natural
排序),那么现有集合是否有可能在一段时间后由该查询以不同的顺序返回未触及的数据?有什么保证吗?
解决方案
有什么保证吗?
没有任何。
是否有可能在一段时间后由该查询以不同的顺序返回现有集合,对于保持不变的数据?
是的。已发布的文档允许这种可能性。出于实际原因,这不太可能,但如果数据库决定有一天突然改变文档的顺序,它不会违反它在已发布文档中做出的任何承诺。
正常操作:压缩、复制、备份/恢复、从健康的副本引导节点
除此之外,插入单个文档可以更改现有文档的顺序。
推荐阅读
- notifications - 每次出现新日志时都会发出 Grafana 警报通知。无需提醒
- ruby - 'end_with?' 的正确用法?
- node.js - 无法在 Azure 机器人框架中拦截机器人响应
- react-native - 在 React 导航 v6 中删除标题
- node.js - TypeORM 和 MongoDB 和存储库:无法读取未定义的属性“原型”
- php - 如何在 laravel 的 @include() 中使用 {{ }} 发送参数
- linux - dpkg-reconfigure locales 后如何刷新 locale 结果
- algolia - 将 3rd 方搜索结果与 Algolia 结果相结合
- swift - 使用伪终端 (PTY) 的 Swift 流程
- asp.net - 带有 OidcClient 的身份服务器 4