填充后错误的数组顺序

我有这个问题,但是我不能在这里粘贴整个代码,所以让我试着解释一下。 我需要通过idfind一些文件,并填充它的ObjectId的数组元素。 比方说,我有从用户集合中的以下文件:

{ _id: 1, "first_name":"Nick", "last_name":"Parsons", "email":"nick@movementstrategy.com", "password":"foo", "clients":[ "50f5e901545cf990c500000f", "50f5e90b545cf990c5000010", "50f5e90b545cf990c5000013" ] } 

find它后,我就像这样填充它的客户:

 User.findById(1) .populate('clients') .exec(function (err, user) { }); 

上面的代码执行后,我有'用户'variables与客户端的填充数组。 但客户有错误的顺序,像这样:

  { _id: "50f5e901545cf990c500000f", "first_name":"cl1", }, { _id: "50f5e90b545cf990c5000013", "first_name":"cl3", }, { _id: "50f5e90b545cf990c5000010", "first_name":"cl2", } 

应该:

  "50f5e901545cf990c500000f", "50f5e90b545cf990c5000010", "50f5e90b545cf990c5000013" 

代替:

  "50f5e901545cf990c500000f", "50f5e90b545cf990c5000013", "50f5e90b545cf990c5000010" 

有人有类似的问题,还是我幸运?

编辑:我已经添加了代码: http ://pastie.org/5901177在该代码中,我创build3个客户端,并推入到user.clients数组。 之后,我在user.clients数组的顶部添加了一个更多的客户端。 所以当我这样做

  Client.where('_id').in(user.clients) 

我错了。 看看这个请通过控制台。

在MongoDB中,每个修改(或添加的文档)都会进入列表的底部。 如果您希望以特定顺序返回项目,请在查询中指定:

 User.find() .sort({_id: 1}) 

其中-1指定相反的顺序。 您可以按任何其他标准进行sorting。