在对我的集合进行排序之后,我想使用聚合管道的“out”阶段来存储它。此阶段是否确保文档的顺序与“排序”阶段生成的顺序相同?
谢谢
答案 0 :(得分:0)
当$out
将文档发送到存储引擎时,可能会出现与document / bson对象大小相关的顺序转换,因为MMAP存储引擎使用填充来允许自然文档增长。
从聚合中删除$ out并添加此代码段将显示文档大小(您可以添加任何其他字段以获取更多诊断数据)。 当我们遇到文件适合两个其他文件之间的间隙的情况时,它将被添加到那里 - 所以订单将被更改 - >这意味着$ out将保留订单,但存储引擎可以添加噪音。
db.coll.aggregate([pipeline]).forEach(function(doc)
{
print(" _id: "+ doc._id + "\t\t size: " + Object.bsonsize(doc) )
})