栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MongoDB及其驱动程序能否保留文档元素的顺序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MongoDB及其驱动程序能否保留文档元素的顺序

从2.6版开始,MongoDB会尽可能保留字段顺序。但是,该

_id
字段始终排在第一位,重命名字段可能导致重新排序。但是,我通常会尽量不要依赖此类细节。正如原始问题所提到的那样,还需要考虑其他一些层,每个层都必须为订单的稳定性提供某种保证…

原始答案:

不,MongoDB 不保证字段的顺序:

“不能保证更新后的现场订单会保持一致或相同。”

特别是,更改文档大小的就地更新通常会更改字段的顺序。例如,如果您的

$set
一个字段的旧值是数字类型,而新值是
NumberLong
,则字段通常会重新排序。

但是,数组可以正确保留顺序:

[ {'key1' : 'value1'}, {'key2' : 'value2'}, ... ]

我完全不知道为什么这是“丑陋的”和“
blo肿的”。存储复杂对象列表再简单不过了。但是,将对象滥用为列表绝对是丑陋的:对象具有关联的数组语义(即,给定名称只能有一个字段),而列表/数组则没有:

// not ok:db.foo2.insert({"foo" : "bar", "foo" : "lala" });db.foo2.find();{ "_id" : ObjectId("4ef09cd9b37bc3cdb0e7fb26"), "foo" : "lala" }// a list can do thatdb.foo2.insert({ 'array' : [ {'foo' : 'bar'}, { 'foo' : 'lala' } ]});db.foo2.find();{ "_id" : ObjectId("4ef09e01b37bc3cdb0e7fb27"), "array" :       [ { "foo" : "bar" }, { "foo" : "lala" } ] }

请记住,MongoDB是一个对象数据库,而不是键/值存储。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609142.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号