如何查询来自不同集合的数据并按日期排序?

时间:2013-11-17 17:18:25

标签: node.js mongoose

我偶然发现我的搜索结果是混合数据的问题,该数据位于不同的集合(帖子/场所/等),目前我正在执行单独的请求以检索此数据,但它显然在其类型中排序(帖子阵列,场地阵列) 如何查询多个集合(帖子/场所)并按日期/任何其他参数(通过mongoose)对它们进行排序? 或者可能有更好的解决方案? 感谢

1 个答案:

答案 0 :(得分:0)

我相信Mongoose不可能,你可以同时做这样的事情:

var async = require('async');

function getPosts(cb) {
    Post.find({"foo": "bar"}, function(err, posts) {
        cb(err, posts);
    })
}

function getVenues(cb) {
    Venue.find({"foo": "bar"}, function(err, venues) {
        cb(err, venues);
    })
}

async.parallel([getPosts, getVenues], function(err, results) {
    if(err) {
        next(err);
    }

    res.send(results.sort(function(a, b) {
        //if default sorting is not enough you can change it here
        return a.date < b.date ? -1 : a.date > b.date ? 1 : 0;
    }));
});

此代码假设您位于快速路线内且PostsVenues都具有共同属性; date。如果您以不同方式命名这些日期属性,则必须改进排序算法。