Repository navigation
Expand file tree
/
Copy pathQueryAggregatedData.js
More file actions
72 lines (58 loc) · 2.46 KB
/
Copy pathQueryAggregatedData.js
File metadata and controls
72 lines (58 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
var mongoose = require('mongoose');
require('./AcmeSchemas.js')();
var comparator = require('./Comparator.js');
mongoose.connect('mongodb://localhost/acme');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function(){
console.log('Connected to acme!')
});
var AggregatedData = mongoose.model('AggregatedData');
AggregatedData
.find({
'value.order' : {
$gt : 100
},
'value.products' : {
$exists : true
},
$where : 'this.value.products.length>10'
})
.exec(function(err, data){
var result = [];
data.forEach(function(element){
var resultElement = {};
resultElement.color = element._id;
resultElement.tooSmallPercent = element.value.too_small/element.value.order;
resultElement.tooLargePercent = element.value.too_large/element.value.order;
resultElement.dontLikePercent = element.value.dont_like/element.value.order;
result.push(resultElement);
})
compareByTooSmall = function(a, b) {
return comparator.compareByAttributeDesc(a,b,'tooSmallPercent');
}
compareByTooLarge = function(a, b) {
return comparator.compareByAttributeDesc(a,b,'tooLargePercent');
}
compareByDontLike = function(a, b) {
return comparator.compareByAttributeDesc(a,b,'dontLikePercent');
}
console.log("Top 5 too_small return rates");
result.sort(compareByTooSmall);
console.log("Color\tTooSmallPercent\tTooLargePercent\tDontLikePercent");
for (var i=0; i<=5; i++) {
console.log(result[i].color + '\t' + (result[i].tooSmallPercent*100).toFixed(2) + '%' + '\t' + (result[i].tooLargePercent*100).toFixed(2) + '%' + '\t' + (result[i].dontLikePercent*100).toFixed(2) + '%');
}
console.log("\nTop 5 too_large return rates");
result.sort(compareByTooLarge);
console.log("Color\tTooSmallPercent\tTooLargePercent\tDontLikePercent");
for (var i=0; i<=5; i++) {
console.log(result[i].color + '\t' + (result[i].tooSmallPercent*100).toFixed(2) + '%' + '\t' + (result[i].tooLargePercent*100).toFixed(2) + '%' + '\t' + (result[i].dontLikePercent*100).toFixed(2) + '%');
}
console.log("\nTop 5 dont_like return rates");
result.sort(compareByDontLike);
console.log("Color\tTooSmallPercent\tTooLargePercent\tDontLikePercent");
for (var i=0; i<=5; i++) {
console.log(result[i].color + '\t' + (result[i].tooSmallPercent*100).toFixed(2) + '%' + '\t' + (result[i].tooLargePercent*100).toFixed(2) + '%' + '\t' + (result[i].dontLikePercent*100).toFixed(2) + '%');
}
});