Найти все документы из коллекции, где запрос соответствует заполненному поддокументу - PullRequest
0 голосов
/ 19 июня 2019

У меня есть три коллекции Players, Matches и MatchPlayers. Каждый документ в matchPlayer имеет свойства playerId и matchId, которые ссылаются на коллекцию Players и Matches соответственно. По заданному значению playerId я хочу найти все совпадения того игрока, где matchId (после заполнения) соответствует определенным запросам. Также схема соответствий не содержит игроков, поэтому я должен найти ее с помощью схемы MatchPlayer. Схемы всего там

const playerSchema = new mongoose.Schema({
  id: String,
  email: String,
  firstName: String,
  lastName: String,
});

const matchSchema = new mongoose.Schema({
  id: String,
  name: String,

  activatedAt: {
    type: Date,
    default: null
  },
  startedAt: {
    type: Date,
    default: null
  },
  endedAt: {
    type: Date,
    default: null
  }
});

const matchPlayerSchema = mongoose.Schema({
  playerId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "Players"
  },
  matchId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "Matches"
  }
});

Я хотел найти все совпадения игрока, где активирован Att! Null. Вот что я попробовал ..

let matches = await MatchPlayer.paginate(
            {
              playerId: player._id
            },
            {
              page,
              limit,
              populate :
                {
                  path: "matchId",
                  model: "Matches"
                  match: {
                    activatedAt: { $ne: null }
                  }
                }
            }
          )

Приведенный выше запрос возвращает все совпадения этого игрока, независимо от того, что свойство activAt соответствует этому совпадению, а также заполняет только те matchId, где activAt равно! Null. Я понимаю, что это из-за объекта соответствия, который я передаю. Вот модуль nongoose-paginate npm link . Также я удалил нерелевантный код, чтобы избежать ненужных подробностей, если вам нужно больше, пожалуйста, сообщите мне в комментариях. Любая помощь будет по достоинству оценена. Заранее спасибо!

...