code: function getDotValue(obj, field) {
    var fieldParts = typeof field === 'string' ? field.split('.') : field,
      i,
      objs;
  
    if (!obj) {
      return undefined;
    } // field cannot be empty so that means we should return undefined so that nothing can match
  
    if (fieldParts.length === 0) {
      return obj;
    }
  
    if (fieldParts.length === 1) {
      return obj[fieldParts[0]];
    }
  
    if (util.isArray(obj[fieldParts[0]])) {
      // If the next field is an integer, return only this item of the array
      i = parseInt(fieldParts[1], 10);
      if (typeof i === 'number' && !isNaN(i)) {
        return getDotValue(obj[fieldParts[0]][i], fieldParts.slice(2));
      }
  
      // Return the array of values
      objs = new Array();
      for (i = 0; i < obj[fieldParts[0]].length; i += 1) {
        objs.push(getDotValue(obj[fieldParts[0]][i], fieldParts.slice(1)));
      }
      return objs;
    } else {
      return getDotValue(obj[fieldParts[0]], fieldParts.slice(1));
    }
  }
docs: ============================================================== Finding documents ============================================================== 
  Get a value from object with dot notation
  @param {Object} obj
  @param {String} field