Mongoose, find, return specific properties

I have this get call:

exports.getBIMFromProject = function(req, res){
  mongoose.model('bim').find({projectId: req.params['prj_id']}, function(err, bim){
    res.send(200, bim);

Where do I specify which properties I want to return? Can’t find it in the docs. The above returns the entire object. I only want a few properties returned.

This is my schema:

var mongoose = require('mongoose'),
  Schema = mongoose.Schema;

var bimSchema = new Schema({
  projectId: Number,
  user: String,
      bimObjectId: Number,
      typeId: String,
        floor: String,
          name: String,
          number: String

mongoose.model('bim', bimSchema);

I don’t want the items array included in my rest call.


You use projection. The first example in the mongoose query docs has a projection operation tucked in.

NB: not real code b/c I highlighted the important bits with triple stars

// find each person with a last name matching 'Ghost', ***selecting the `name` and `occupation` fields***
Person.findOne({ 'name.last': 'Ghost' }, ***'name occupation'***, function (err, person) {
  if (err) return handleError(err);
  console.log('%s %s is a %s.',,, person.occupation) // Space Ghost is a talk show host.

The Person schema isn’t specified but I think the example is clear enough.

Leave a Reply

Your email address will not be published. Required fields are marked *