gpt4 book ai didi

node.js - 如何在 Mongoose 中聚合和分组

转载 作者:可可西里 更新时间:2023-11-01 10:43:22 28 4
gpt4 key购买 nike

我有很多客户,每个客户都分配了一名员工。我想找到每个员工的帐户数。我如何使用 mongoose(mongodb) 的聚合来完成这个任务。熟悉mongoose的其他功能,可以用下面的代码实现

exports.accountsOfEachEmployee = function(req, res) {
Account.find({active:true}).exec(function(err, accounts){
if (err || !accounts) res.status(400).send({
message: 'could not retrieve accounts from database'
});
var accountsOfEachEmployee = {};
for (var i = 0; i < accounts.length; i++) {
if(accountsOfEachEmployee[order[i].employee]) {
accountsOfEachEmployee[order[i].employee] = 1;
} else {
accountsOfEachEmployee[order[i].employee]++;
}
}
res.json(accountsOfEachEmployee);
});
};

使用聚合是否更快?分组和聚合如何在 mongoose(mongodb) 中工作。以下是我的帐户架构

var AccountSchema = new Schema({
active: {
type : Boolean,
default: false
},
employee: {
type: Schema.ObjectId,
ref: 'Employee'
},
});

最佳答案

聚合比 map reduce 更快,可以在 mongodb 中获得简单查询的结果。我能够用结果完成上述查询,然后对 mongodb 进行分组。以下是我后来使用的查询

Order.aggregate({$match: {active: true }}, 
{$group: {_id:'$employee', numberOfOrders: {$sum:1}}}, function(err, orders) {
res.json(orders);
});

查询分两部分执行。第一部分是获取所有事件的结果,然后根据员工的值(value)对它们进行分组,同时获取新的字段 numberofOrders,这是我们根据员工分组时形成的每个组中的文档数。

关于node.js - 如何在 Mongoose 中聚合和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804440/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com