Итак, у меня есть вопросник модель:
const schema = new mongoose.Schema({
title: String,
category: String,
description: String,
requirementOption: String,
creationDate: String,
questions: [],
answers: []
})
Как видите, ответы представляют собой массив. Этот массив содержит объект с такой структурой
{
"participantEmail": "someEmail@email.email"
"currentIndex": 14,
...
}
Теперь я хочу получить специальную c анкету по идентификатору, но в массиве ответов я хочу указать только c адрес электронной почты участника. Таким образом, массив ответов должен иметь либо один элемент, либо ни одного элемента. Но я не хочу получать результат null
, если в массиве ответов нет такого письма.
Я понимаю, как получить этот конкретный c элемент из массива с помощью этого запроса:
dbModel.findOne({_id: id, 'answers': {$elemMatch: {participantEmail: "someEmail@email.com"}}}, {'answers.$': 1}).exec();
И если это электронное письмо существует в массиве ответов, я получу следующее:
"data": {
"questionnaireForParticipant": {
"id": "5d9ca298cba039001b916c55",
"title": null,
"category": null,
"creationDate": null,
"description": null,
"questions": null,
"answers": [
{
"participantEmail": "someEmail@email.com",
....
}
}
}
Но если этого электронного письма нет в массиве ответов, я получу только null
. Также я хотел бы получить title
и category
и все остальные поля. Но я не могу найти способ сделать это.