在这里,我需要使用mongoose
计算集合中的所有子文档这是我的路线
router.get('/all-booking', function(req, res){
BookingList.find({}, 'booking', function (err, docs) {
if(err)
throw err;
res.json(docs);
});
});
此处 BookingList booking
是一个subdocument array
,通过上面的查询获取Collection中的所有子文档,但我需要Count
所有子文件,我该怎么做。
帮助将不胜感激
答案 0 :(得分:0)
使用聚合来获取计数:
router.get('/all-booking', function(req, res){
var pipeline = [
{ // Get the length of the booking array
"$project": {
"booking_size": { "$size": "$booking" }
}
},
{ // Get the total length of all the booking fields
"$group": {
"_id": null,
"count": { "$sum": "$booking_size" }
}
}
]
BookingList.aggregate(pipeline, function (err, result) {
if(err)
throw err;
console.log(result[0].count); // Prints the count of all the booking sub-documents in the collection
res.json(result);
});
// Or using the fluent aggregate pipeline builder API
BookingList.aggregate()
.project({ "booking_size": { "$size": "$booking" } })
.group({ "_id": null, "count": { "$sum": "$booking_size" } })
.exec(function (err, result) {
if(err)
throw err;
console.log(result[0].count); // Prints the count of all the booking sub-documents in the collection
res.json(result);
});
});