Как отфильтровать несколько коллекций в Mongoose? - PullRequest
0 голосов
/ 23 октября 2018

Я занимаюсь разработкой приложения, в котором есть фильмы, шоу-сеансы и кинотеатры.Сессия соединяет как фильмы, так и кинотеатры.Например, сеанс в 17:00 соединит фильм Venom с деревенскими кинотеатрами

. Схема выглядит следующим образом:

const movieSchema = new Schema({
title: String,
language: String,
})

let cinemaSchema = new Schema({
state:String,
location: String,
website: String})

let sessionSchema = new Schema({
movie: {
type: mongoose.Schema.ObjectId,
ref: "Movie"
  },
  cinema: {
    type: mongoose.Schema.ObjectId,
    ref: "Cinema"
  },
sessionDateTime: {
    type: [Date],
    required: "Session must have a date and time "
  },
  ticketLink: String})

Я представляю данные, по которым клиент будет получать активные сеансы вместес фильмами, основанными на названии фильма Например, http://localhost:50000/api/v1/movies/getSessions?title=Venom

Мой код для создания возвращаемых объектов фильма выглядит следующим образом:

let movies = await Movie.find({title:"Venom"})
  .limit(3)
  .skip(0);
let movieSessions=[]
for (const movie of movies) {
  const sessions = await Session.find({
    movie: movie._id
  }).populate("cinema");

const movieSession = { ...movie._doc, sessions };
      movieSessions.push(movieSession);
}

Есть ли лучший способ выполнить код так, чтобыя избегаю цикла for..of путем создания фильтруемого объекта на уровне БД?

Также я планирую использовать querymen, который лучше всего использовать при запросах с mongoose, какие данные фильтрации в коде JS.

Любая помощь будет оценена

...