聚合管道的“out”阶段是否保持有序集合?

时间:2016-05-30 14:43:50

标签: mongodb

在对我的集合进行排序之后,我想使用聚合管道的“out”阶段来存储它。此阶段是否确保文档的顺序与“排序”阶段生成的顺序相同?

谢谢

1 个答案:

答案 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)  )          
})

解决方案

聊天后 - 并建议从MMAP切换到WT -query成功运行!