У меня есть модель, называемая назначениями, в которой есть поле с именем doctor, которое имеет тип : mon goose .Schema.ObjectId, . Я пытаюсь выполнить агрегацию модели, и на первом этапе я выполняю сопоставление $ в поле doctor, чтобы получить только документы, которые соответствуют предоставленному идентификатору врача. проблема в том, что я получаю пустой массив, когда запускаю запрос, но идентификатор врача, который я ищу, находится в базе данных. Ниже представлена моя модель назначения. Теперь я не понимаю, почему я не могу получить результат, когда делаю запрос в поле больница и врач, но если я выполняю сопоставление в поле статуса, я получаю данные. Это потому, что поля Doctor и Hospital имеют тип type: mon goose .Schema.ObjectId . Пожалуйста, помогите
const appointmentSchema = new mongoose.Schema(
{
patient: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: 'Patient user id must be provided'
},
hospital: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: 'Hopital is reqired'
},
doctor: {
type: mongoose.Schema.ObjectId,
ref: 'User',
required: 'Doctor is require'
},
status: {
type: String,
default: 'Active',
trim: true,
enum: {
values: ['Active', 'Inactive'],
message: 'Wrong Status Supplied'
}
},
startDate: {
type: Date,
required: true
},
endDate: {
type: Date
},
completed: {
type: Boolean,
default: false
},
message: String,
createdAt: {
type: Date,
default: Date.now()
}
},
{
toJSON: { virtuals: true },
toObject: { virtuals: true }
}
);
и ниже мой агрегат ppipeline
exports.doctorSchedlue = catchAsync(async (req, res, next) => {
const aggregateData = await Appointment.aggregate([
{ $match: { doctor: '5ee9be0147faee607cb3cea8' } }
]);
res.status(200).json({
status: 'success',
id: req.params.id,
aggregateData
});
});