#node.js #mongodb #mongoose
#node.js #mongodb #mongoose
Вопрос:
У меня есть прикрепленная структура документа. Мне нужно получить документ только с некоторым параметром.
Например, мне нужно, чтобы данные были такими.
{
"_id": "57f36d71fb1ef61bd84f866b",
"testMaxScore": 235,
"testMaxTime": 60,
"inviteId": "57f0a97d11594560c02a8f43",
"testName": "Sr. Interactive Developer l1",
"sectionList": [
{
"sectionName": "Java MCQ",
"sectionInfo": "Some info",
"questionList": [
{
"_id": "57ea3d003f2ec2cbbe98bbb9",
"question": ""
},
{
"_id": "57ea3d003f2ec2cbbe98bbb9",
"question": ""
}
]
}
]
Как я могу этого добиться?
Я использую mongoose
Кто-нибудь может мне помочь в этом
Спасибо, Киран
Ответ №1:
Возможно через структуру агрегации. Рассмотрите возможность запуска операции агрегирования, которая имеет единый конвейер с $project
оператором для проецирования только тех полей, которые вы хотите.
В приведенном выше примере вы бы запустили его как
Model.aggregate([
{
"$project": {
"testMaxScore": 1,
"testMaxTime": 1,
"inviteId": 1,
"testName": 1
"sectionList.sectionName" : 1,
"sectionList.sectionInfo" : 1,
"sectionList.questionList._id": 1,
"sectionList.questionList.question": 1
}
}
]).exec(function(err, result){
console.log(result);
})
или с помощью find()
метода:
Model.find(
{ },
{
"testMaxScore": 1,
"testMaxTime": 1,
"inviteId": 1,
"testName": 1
"sectionList.sectionName" : 1,
"sectionList.sectionInfo" : 1,
"sectionList.questionList._id": 1,
"sectionList.questionList.question": 1
}
).exec(function(err, result){
console.log(result);
})
Ответ №2:
Попробуйте использовать следующее выражение find:
yourSchema.find({}).select('testName inviteId sectionList.sectionName'); // and so on