mongoose 中 使用 populate
进行多表联合查询
drawApply = new Schema({salesId: { type: Schema.ObjectId, ref: 'sales' },money: Number,status: { type: Number, default: 0 },createTime: { type: Date, default: Date.now }
});sales = new Schema({name: { type: String, required: true, unique: true },pwd: String,phone: String,merchant: { type: Schema.ObjectId, ref: 'merchant' },status: { type: Number, default: 0 }
});merchant = new Schema({name: String,sname: String,type: String
});
查询语句
drawApply.find().populate({path: 'salesId',select: '_id name phone merchant',model: 'sales',populate: {path: 'merchant',select: '_id sname',model: 'merchant'}).sort({createTime: -1}).exec(function(err, list) {// list of drawApplies with salesIds populated and merchant populated
});
drawApply.find().populate({path: 'salesId',select: '_id name phone merchant',model: 'sales',populate: {path: 'merchant',select: '_id sname',model: 'merchant'}).populate('approver', 'name')//这里是简写方式, {path:'approver',select:'name'}.populate('operator', 'name').sort({createTime: -1}).exec(function(err, list) {// list of drawApplies with salesIds populated and merchant populated
});