У меня есть следующая коллекция MongoDB (JSON):
{
"_id" : ObjectId("570185458351bbac27bc9a20"),
"email" : "[email protected]",
"applicants" : [
{
"id" : "570724e4ae4f8a5026156999",
"email" : "[email protected]",
},
{
"id" : "570724e4ae4f8a5026156333",
"email" : "[email protected]",
},
{
"id" : "570724e4ae4f8a5026156111",
"email" : "[email protected]",
},
{
"id" : "570724e4ae4f8a5026156222",
"email" : "[email protected]",
}
],
},
{
"_id" : ObjectId("570185458351bbac27bc9a20"),
"email" : "[email protected]",
"applicants" : [
{
"id" : "570724e4ae4f8a5026156555",
"email" : "[email protected]",
},
{
"id" : "570724e4ae4f8a5026156666",
"email" : "[email protected]",
},
],
},
{
"_id" : ObjectId("570185458351bbac27bc9a20"),
"email" : "[email protected]",
"applicants" : [
{
"id" : "570724e4ae4f8a5026156555",
"email" : "[email protected]",
},
{
"id" : "570724e4ae4f8a5026156666",
"email" : "[email protected]",
},
],
}
Я хотел бы получить количество элементов во всех массивах документа, где адрес электронной почты = [email protected]. Как я могу получить этот счет?
Я использую следующее, чтобы получить количество документов с электронной почтой [email protected], используя это:
collection.count({"email" : tmpEmail}, function (err, count) {
res.json(count);
console.log("Number: " + count);
});
Как я могу продолжить и подсчитать количество элементов во всех массивах кандидатов для документов, где адрес электронной почты [email protected]? Может для приведенного выше примера будет: 6.
РЕДАКТИРОВАТЬ:
В соответствии с одним из ответов я изменил свой запрос на следующее:
Ответ 1:
collection.aggregate(
{$match: {"email": req.user.username, "status" : "true"}},
{$unwind: "$applicants"},
{$group: {_id:null, count: {$sum :1}}, function (err, count) {
res.json(count);
console.log("Number of New Applicants: " + count);
}
});
Ответ 2:
collection.aggregate(
[{$match:{"email" : req.user.username, "status" : "true"}},
{$project:{_id:0, email:1, totalApplicants:{$size:"$applicants"}}},
{$group:{_id:"$employer", count:{$sum:"$totalApplicants"}}}],
function (err, count){
res.json(count);
console.log("Number of New Applicants: " + count);
});