У меня есть список вопросов для пациента, у каждого пациента есть идентификатор в mongoDB (Patient ID). В каждом вопросе у меня много комментариев (я разделяю каждый комментарий по типу комментария: type = "ask" для комментария к последующему примечанию пациента, type = "answer" для комментария врача) Я хочу вернуть массив комментариев, но отфильтровать поtype = "ask", как мне это сделать. В настоящее время я возвращаю только по массиву всех комментариев, включая пациента и доктора. Я использую агрегат и поиск, как это. Как я могу фильтровать по типу? Пожалуйста, помогите мне? Спасибо
findQuestionByPatientId(req, res, next){
Questions.aggregate([
{
$match: {
$and:[{"patientId":ObjectId(req.params.patientId)}]
}
},
{
$lookup:
{
from: "comments", // at present It's list all comments include type ="ask" and type = "answer". I want to filter only comment with type ="ask"
localField: "_id",
foreignField: "questionId",
as: "comments"
}
}
]).then(data => {
res.send({"data": data, "resultCode": 1, "message " : ""});
});
}
Ниже приведены примеры данных, в списке есть 2 вопроса:
{
"data": [
{
"_id": "5d8385844ad1d5001058f220",
"patientId": "5c80930d447df7735138693e",
"title": "I have a stomachache",
"askFor": "myself",
"age": 28,
"gender": "",
"askContent": "I have a stomachache, please give me a prescription",
"attachment": "5d8385844ad1d5001058f21f",
"askToDoctor": "5d1cd947231ceb95b8838c1b",
"createdBy": "5c80930d447df7735138693e",
"askStatus": "Awaiting Reply",
"approvedBy": "",
"approved": false,
"createdAt": "2019-09-19T13:41:24.874Z",
"updatedAt": "2019-09-19T13:41:24.874Z",
"__v": 0,
"comments": [
{
"_id": "5da0039d9a3d852cf08aa89d",
"content": "I sent my image in attached file",
"type": "ask",
"questionId": "5d8385844ad1d5001058f220",
"approved": false,
"createdBy": "5d1cd947231ceb95b8838c1b",
"attachedFile": null,
"approvedBy": "5d1cd947231ceb95b8838c1b",
"createdAt": "2019-10-11T04:22:53.538Z",
"updatedAt": "2019-10-11T04:22:53.538Z",
"__v": 0
},
{
"_id": "5da003a39a3d852cf08aa89f",
"content": "Doctor, plz give me a detail guide",
"type": "ask",
"questionId": "5d8385844ad1d5001058f220",
"approved": false,
"createdBy": "5d1cd947231ceb95b8838c1b",
"attachedFile": null,
"approvedBy": "5d1cd947231ceb95b8838c1b",
"createdAt": "2019-10-11T04:22:59.105Z",
"updatedAt": "2019-10-11T04:22:59.105Z",
"__v": 0
},
{
"_id": "5da003aa9a3d852cf08aa8a1",
"content": "I sent you the guide to take medicine in attached",
"type": "reply",
"questionId": "5d8385844ad1d5001058f220",
"approved": false,
"createdBy": "5d1cd947231ceb95b8838c1b",
"attachedFile": null,
"approvedBy": "5d1cd947231ceb95b8838c1b",
"createdAt": "2019-10-11T04:23:06.896Z",
"updatedAt": "2019-10-11T04:23:06.896Z",
"__v": 0
}
]
},
{
"_id": "5d8b2e9406e021904a797838",
"patientId": "5c80930d447df7735138693e",
"title": "I got a flu",
"askFor": "Myseft",
"age": 34,
"gender": "",
"askContent": "I got a flu, please give me a medicine",
"attachment": "5d8b2e9406e021904a797837",
"askToDoctor": "5d1cd947231ceb95b8838c1b",
"createdBy": "5c80930d447df7735138693e",
"askStatus": "Awaiting Reply",
"approvedBy": "",
"approved": false,
"createdAt": "2019-09-25T09:08:36.891Z",
"updatedAt": "2019-09-25T09:08:36.891Z",
"__v": 0,
"comments": []
}
],
"resultCode": 1,
"message ": ""
}