Mongoose/Mongodb: Exclude fields from populated query data

Thanks JohnnyHK, and for object parameter this works:

Entity.populate({
    path: 'bookids',

    // some other properties
    match: {
        active: true
    },
    // some other properties

    select: '-_id -__v' // <-- this is the way
}).then(...) // etc

To exclude individually

User.findOne({_id: userId}).select("-password")

To exclude using the schema

var userSchema = mongoose.Schema({
  email: {
    type: String,
    required: true,
    unique: true,
  },
  password: {
    type: String,
    required: true,
    select: false,
  },
});

or this will also work

db.collection.find({},{"field_req" : 1,"field_exclude":0});

The second parameter of populate is a field selection string, so you can do this as:

Author
  .findOne({personcode: code})
  .select('-_id -__v')
  .populate('bookids', '-_id -__v')
  .exec(function (err, data) {
    //foo
});

Note that you should combine your field selections into a single string.