У меня есть три коллекции 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 .
Также я удалил нерелевантный код, чтобы избежать ненужных подробностей, если вам нужно больше, пожалуйста, сообщите мне в комментариях. Любая помощь будет по достоинству оценена. Заранее спасибо!