我正在学习MongoDB,我注意到每当我对文档进行更新时,正在更新的字段被推送到订单的末尾,所以如果我有类似的东西:
db.collection.save({field1: value1, field2: value2, ..., field 10: value10});
db.collection.update({field1: value1}, {$set: {field2: new_value}});
Run Code Online (Sandbox Code Playgroud)
如果你这样做:
db.collection.find();
Run Code Online (Sandbox Code Playgroud)
它会显示:
{ "field1":"value1", ..., "field10":"value10", "field2":"new_value"}
Run Code Online (Sandbox Code Playgroud)
您可以看到字段顺序如何更改将更新字段推送到文档末尾的位置.此外,文档本身也被推到了collectoin的末尾.我知道它是一个"无架构"的数据库,它可能不是一个大问题,但它看起来并不"漂亮":).有没有办法在不更改订单的情况下进行就地更新?
Ber*_*ett 21
MongoDB根据特定的填充因子为新文档分配空间.如果您的更新增加了文档的大小超出最初分配的大小,则文档将移动到集合的末尾.相同的概念适用于文档中的字段.
基于JSON原则的MongoDB中的文档结构和集合结构.JSON是一组键/值对(特别是用于文档的fieldName/fieldValue和用于集合的索引/文档).从这个角度来看,你似乎根本不能依赖订单.
| 归档时间: |
|
| 查看次数: |
19206 次 |
| 最近记录: |