猫鼬$ lookup聚合无法正常工作

时间:2020-02-16 05:51:58

标签: node.js mongodb mongoose mongodb-query mongoose-schema

我正在编写这个卑鄙的堆栈应用程序,这里我有该公司的公司架构和车辆架构。

公司详细信息架构

var CompanyDetailsSchema = new Schema({
    companyName: String,
    createdAt: { type: Date, default: Date.now },
    ...............
    ...............

});
module.exports = mongoose.model('Company-details', CompanyDetailsSchema);

车辆架构

var VehicleDetailsSchema = new Schema({
    companyId:{
        type:mongoose.Schema.ObjectId,
        ref: 'Company-details'
    },
    createdAt: { type: Date, default: Date.now },
    ....................
    ....................
});

module.exports = mongoose.model('Vehicle-details', VehicleDetailsSchema);

我需要的是在获取车辆详细信息时也获取所有公司详细信息。就像在SQL连接查询中一样,为此,我正在使用此$lookup聚合。此代码示例返回所有车辆,但公司详细信息为空。如何在猫鼬中获得所有公司详细信息。

getVehciles:() =>{
        return new Promise((resolve, reject) => {
            VehicleDetailsSchema.aggregate([{
                $lookup: {
                    from: "Company-details", // collection name in db
                    localField: "companyId",
                    foreignField: "_id",
                    as: "companyDetails"
                }
            }]).exec(function(err, vehicles){
                if(err) {
                    reject(err)
                } else {
                    resolve(vehicles)
                }
            });
        })
    },

1 个答案:

答案 0 :(得分:0)

尝试此代码对我有用。

 getVehciles:() =>{
    return new Promise((resolve, reject) => {
        VehicleDetailsSchema.aggregate([{
            $lookup: {
                from: "company-details", // pass the callection name in small letters
                localField: "companyId",
                foreignField: "_id",
                as: "companyDetails"
            }
        }]).exec(function(err, vehicles){
            if(err) {
                reject(err)
            } else {
                resolve(vehicles)
            }
        });
    })
},