情况一: 直接链式,返回name(值为1),不返回_id(值为0)
Model.find().populate('parent',{name: 1,_id: 0})
情况二: 使用通用 CRUD 接口时,部分接口需要特殊处理,用到了setOptions方法,返回name(值为1),不返回_id(值为0)
queryOptions.populate = { path: 'parent', select: {'name': 1,'_id': 0}}Model.find().setOptions(queryOptions)
1、mongoose中一个数据模型Product(商品)关联另外一个数据模型Brand(品牌)需要使用ref,关联查询使用populate
new mongoose.Schema({// 商品名称name: { type: String, required: true, validate: /\S+/ },// 商品内容content: { type: String, required: true, validate: /\S+/ },// 关联的品牌brand: { type: mongoose.Schema.Types.ObjectId, ref: 'Brand' }...
new mongoose.Schema({// 品牌name: { type: String, required: true, validate: /\S+/ },// 品牌图片img: { type: String, required: true, validate: /\S+/ }...
// 过滤条件const options = {sort: { _id: -1 },page: Number(page),limit: Number(size),// populate: ['brand', 'tag'],populate: [{ path: 'brand', select: 'name' }, 'tag'],//brand返回name字段select: '-password -content'};// 查询参数const keywordReg = new RegExp(keyword)const query = {"$or": [{ 'name': keywordReg },{ 'slug': keywordReg },{ 'description': keywordReg }]}const ones = await Product.paginate(query, options)
