code: function (parentBuilder, field) {
      if (!dataUtils.isValidStr(field)) throw "Invalid field, should be a string: " + dataUtils.JSONstringify(field);
  
      /**
       * Ensures a comparison of the field with the value.
       * @param {string} comparator e.g. "$gt", "$gte", etc.
       * @param {*} value
       * @returns {QueryBuilder} the parent Builder. Use .andField()
       * to chain further with this builder.
       */
      this.is = function (comparator, value) {
          return parentBuilder._compare(field, comparator, value);
      };
  
      /**
       * Ensures that the field matches the given value. This is same
       * as calling matchAll([value]).
       * @param {*} value
       * @returns {QueryBuilder} the parent Builder. Use .andField()
       * to chain further with this builder.
       */
      this.matches = function (value) {
          return parentBuilder._matchesAll(field, [value]);
      };
  
      /**
       * Ensures that the field matches all the values.
       * @param {Array.<*>} values
       * @returns {QueryBuilder} the parent Builder. Use .andField()
       * to chain further with this builder.
       */
      this.matchesAll = function (values) {
          return parentBuilder._matchesAll(field, values);
      };
  
      /**
       * Ensures that the field matches at least one of the values.
       * @param {Array.<*>} values
       * @param {boolean} [addToExistingOr=false] If true, this will
       * be added to the existing OR list ($in), if any.
       * @returns {QueryBuilder} the parent Builder. Use .andField()
       * to chain further with this builder.
       */
      this.matchesAny = function (values, addToExistingOr) {
          return parentBuilder._matchesAny(field, values, addToExistingOr);
      };
  }
docs: This builder helps create efficient queries and expressions
  for document fields.
  
  @param {QueryBuilder} parentBuilder The parent query builder.
  @param {string} field A field in the target document.
  @constructor