【问题标题】:How to sort documents based on $in order?如何根据 $in 顺序对文档进行排序?
【发布时间】:2016-09-12 04:07:09
【问题描述】:

我有如下的 ObjectId 数组:

var list = [{_id: ObjectId(1)}, {_id: ObjectId(2)}, {_id: ObjectId(3)}];

我需要通过以下查询来查询这些文档:

Post.find({_id: {$in: list}}).exec(function (err, posts) {
    console.log(posts);
});

但不幸的是,posts 的顺序是随机的。根据list 数组进行正确排序的最佳方法是什么?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    对于这个问题,我们有两个选择:

    1. 客户端排序
    2. 按照answer使用聚合框架进行排序

      db.x.aggregate:([{ $sort:{ list:1 }}])

    【讨论】:

    • 感谢您的回答,但我无法使用聚合进行排序,因为我按 _id 查询文档并且没有它们的上下文
    • @Erik - 所以只能应用客户端排序或按要求的顺序保存文档:-)
    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2019-03-28
    相关资源
    最近更新 更多