title: virtual property based on another virtual property
body: <p>I have Product and Review models. I do parent referencing from review to the product.</p>
  <p>This is the review Model:</p>
  <pre><code>const Review: Schema = new Schema(
      {
          user: {
              type: SchemaTypes.ObjectId,
              required: true,
              ref: models.user,
              validate: validator.isMongoId,
          },
          product: {
              type: SchemaTypes.ObjectId,
              required: true,
              ref: models.product,
              validate: validator.isMongoId,
          },
          rating: {
              type: SchemaTypes.Number,
              required: true,
              min: 1,
              max: 5,
              validate: validator.isInt
          },
          text: {
              type: SchemaTypes.String,
              required: true,
              maxlength: 255,
              trim: true,
          },
      },
      { timestamps: true, collection: collections.review }
  )
  </code></pre>
  <p>And populate the reviews property on query, which returns an array.</p>
  <pre><code>Product.virtual('reviews', {
      ref: models.review,
      foreignField: 'product',
      localField: '_id',
  })
  
  </code></pre>
  <p>I also want to get a ratingsAverage property on the product somehow. I tried a virtual ratingsAverage property based on the virtual reviews array but I cant figure out the syntax.</p>
  <p>Should I be using a virtual property, create a method, use a middleware, I don't know which is good but I cant figure out the syntax for none.</p>