Как создать поле в Mongodb на основе других значений поля - PullRequest
0 голосов
/ 26 марта 2020

У меня проблема класса c в пн go дБ

У меня есть схема ресторана

const restaurantSchema = new mongoose.Schema({
  name: {
    type: String,
    minlength: 5,
    maxlength: 150,
    required: true
  },
  owner: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User'
  },
  reviews: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Review' }],
  avgRating: {
     type: Number,
     min: 0.0,
     max: 5.0,
     default: 0.0
   }
} );

, и у меня есть схема обзора

const reviewSchema = new mongoose.Schema({
  user: new mongoose.Schema({
    name: {
      type: String,
      required: true,
      minlength: 5,
      maxlength: 50
    }
  }),
  restaurant: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'Restaurant',
    required: true
  },
  rating: {
    type: Number,
    enum: [1, 2, 3, 4, 5],
    default: 0
  },
  deleted: {
    type: Boolean,
    default: false
  }
});

I хочу, чтобы avgRating ресторанов был чем-то вроде reviews.filter (review => reviews.deleted === false) .avg (review => review.rating)

Я хочу иметь возможность сортировать фильтр по avgRating. Как мне добиться этого в mongodb?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...