title: Mongoose + MongoDB: select:false with select("+attribute.subattribute") Not working
body: <p>I have a Mongoose schema for my user defined as follows</p>
  
  <pre><code>var schema   = new mongoose.Schema({
  firstName: { type: String, required: true },
  lastName: { type: String, required: true },
  birthDate: { type: Date, required: true },
  gender: { type: String, required: true },
  roles: { type: Array, required: true },
  authentication: {
      email: { type: String, unique: true, required: true },
      password: { type: String, required: true, select: false },
      token: { type: String, unique: true, select: false },
      tokenExpires: { type: Date, select: false }
  });
  </code></pre>
  
  <p>As you can see, on the authentication.password, authentication.token, and authentication.tokenExpires I have utilized the 'select:false' option for those fields. This works like a charm and Mongoose does not return any of those fields on a select but still lets me search for objects with those fields. </p>
  
  <p>Here is the problem. When I do need to have access to those fields in my code and I utilize the '.select("+attribute.attribute")' function on a user 'find' operation I cannot get any of those fields back in the returned object. </p>
  
  <pre><code>User.findOne({'authentication.token': bearerHeader}, function(err, user) {
          if (err) {
              res.status(httpMessages.genericServerError.code);
              res.json({
                  type: false,
                  data: httpMessages.genericServerError.message,
                  error: '::USIC:01::'
              });
              next(false);
          } else {
              if(user){
                  //Add user to the request for use down the line
                  req.currentUser = user;
  
                  //Audit user access
                  audit.auditUser(user._id, user.fullName, req.connection.remoteAddress, req.url, req.method);
  
                  next();
              }else{
                  req.currentUser = null;
                  next();
              }
          }
      }).select("+authentication.token");
  </code></pre>
  
  <p>Here is what I get back demonstrating that the '.select("+attribute")' function is not working on sub-attributes of a document's primary attributes. </p>
  
  <pre><code>{ _id: 54b0b297b3ab5dfb724ad727, firstName: 'name', lastName: 'name', birthDate: Fri Jan 01 2500 00:00:00 GMT-0700 (MST), gender: 'm', authentication: { email: 'test@test.com' }
  </code></pre>
  
  <p>Anyone have any ideas?</p>