【发布时间】:2017-06-23 20:35:39
【问题描述】:
我正在尝试在 mongo 中使用聚合框架来获取一些数据统计信息。我正在使用的查询,在本地运行时几乎不需要一分钟,但是当我在服务器上运行相同的查询时,它没有给出响应,并且在等待太久之后,我不得不取消它,谁能告诉我为什么这发生了。
var orderIds = db.delivery.find({"status":"DELIVERED"}).map(function(o) {
return o.order
});
var userIds = db.order.aggregate([{
$match : { _id : { $in : orderIds } }
}, {
$group: { _id : "$customer" }
}]).map(function(u) { return u._id });
var userstats = db.order.aggregate([{
$sort : { customer : 1, dateCreated : 1 }
}, {
$match : { status : "DELIVERED", customer : { $in : userIds } }
}, {
$group: {
_id : "$customer", orders : { $sum : 1 },
firstOrderDate : { $first : "$dateCreated" },
lastOrderDate : { $last : "$dateCreated" }
}
}]);
userstats.forEach(function(x) {
db.user.update({ _id : x._id }, {
$set : {
totalOrders : x.orders,
firstOrderDate : x.firstOrderDate,
lastOrderDate : x.lastOrderDate
}
})
})
我不确定,但它在服务器上不应该更快吗? ,但它无法提供输出。
【问题讨论】:
标签: node.js mongodb aggregation-framework