1

我有问题,但我不能在这里粘贴整个代码,所以让我试着解释一下。我需要通过 id 找到一些文档并填充其 ObjectId 的数组元素。假设我有以下来自用户集合的文档:

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

找到它后,我会像这样填充它的客户:

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

  });

执行上面的代码后,我有一个填充了客户端数组的“用户”变量。但是客户的订单错误,如下所示:

       {
          _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 在该代码中,我创建了 3 个客户端并推送到 user.clients 数组中。之后,我在 user.clients 数组的顶部又添加了一个客户端。所以当我这样做的时候

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

我得到错误的顺序。请通过控制台查看此内容。

4

1 回答 1

1

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

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

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

于 2013-01-28T10:09:10.537 回答