优化聚合查询mongoose

时间:2017-11-13 17:14:42

标签: mongodb mongoose mongoose-schema

我正在尝试优化mongoose的咨询。首先我的模型是这样的:

    var TrackSchema = new Schema({
        Car: {
            type: Schema.ObjectId,
            ref: 'Car'
        },
        Imei: {
            type: String,
            trim: true
        },
        Latitude: {
            type: Number
        },
        Longitude: {
            type: Number
        }
    });

    var CarSchema = new Schema({
        Basis: {
            type: Schema.ObjectId,
            ref: 'Basis'
        },
        Imei: {
            type: String,
            trim: true
        }
    });

    var BasisSchema = new Schema({
        Fence: {
            type: Array,
        }
    });

我想要做的是从模型Tracks获取Car的最后一个具有不同Imei的寄存器。但我还需要从与Basis相关联的Car获取Fence字段。

我alredy有查询,但我想改进它,因为它需要一些时间才能得到它。

    Track.aggregate([
        {
            $group: {
                _id: {
                    'Imei': '$Imei',
                    'Car': '$Car',
                },
                Longitude : { $last: '$Longitude' },
                Latitude : { $last: '$Latitude' },
                Fecha: { $last: '$CreatedDate'}
            },
        },
        { 
            $lookup: {
                    from: 'cars', 
                    localField: '_id.Car', 
                    foreignField: '_id', 
                    as: 'unit'  
                }
        },
        {
            $unwind: '$unit'
        },
        {
            $lookup: {
                from: 'basis',
                localField: 'unit.Basis',
                foreignField: '_id',
                as: 'geofence'
            }
        }
    ])
    .exec(function(error, results){

    });

0 个答案:

没有答案