使用聚合与填充

时间:2016-04-19 20:56:25

标签: node.js mongodb mongoose aggregation-framework mongoose-populate

我正在尝试将聚合与populate一起使用。我需要$ group到引用的ObjectId Schema的变量。结构如下:

var jobFilter = mongoose.Schema({    
        location    : { type: Schema.Types.ObjectId, ref: 'Location' }, 
        field       : {type: Schema.Types.ObjectId, ref: 'Jobfield'} 
    })

var locationSchema = mongoose.Schema({
    city            : String,
    longitude       : Number,
    latitude        : Number
});

我希望按_field和city分组。我写了这个查询,但因为城市而无效。是否可以在此查询中以某种方式填充位置?

jobFilter.aggregate(
            [
                {
                    $match  : {
                        "jobFilter.field" : {$ne: null},
                        "jobFilter.location" : {$ne: null}}
                },
                {
                    $group  :
                    { _id: {
                        "field" : "$jobFilter.field" ,
                        "location" : "$jobFilter.location.city"
                    }, count: { $sum: 1}}},
                {
                    $sort   : { count : -1}
                }
            ]
        )
        .exec()

0 个答案:

没有答案