Je suis en train d'exécuter cette commande MongoDB dans Node.js:exécution requête MongoDB dans Node.js
db.events.group({
key : {
'timestamp.d' : true
},
cond: { 'event_name': 'search' },
initial : {
'count' : 0,
'empty' : 0,
'redos' : 0
},
reduce : function(item, summaries){
summaries.count++;
if (item.result_count == 0){
summaries.empty++;
}
if (item.original_query) {
summaries.redos++;
}
var totalSuccesses = (summaries.count - summaries.redos - summaries.empty);
summaries.percentNonFailures = (totalSuccesses/summaries.count) * 100
}
})
Cela fonctionne très bien de la commande Mongo comme me donner des résumés par jour. Lorsque je tente cela dans Node.js:
db.collection('events', function(err, collection){
collection.group(
{ "timestamp.d": true },
{ "event_name": "search" },
{
count: 0,
empty: 0,
redos: 0,
percentNonFailure: 0,
},
function(item, summaries){
summaries.count++;
if (item.result_count == 0) { summaries.empty++; }
if (item.original_query) { summaries.redos++; }
totalSuccesses = summaries.count - summaries.redos - summaries.empty
summaries.percentNonFailure = (totalSuccesses/summaries.count) * 100
},
function(err, results){ self.eventEmitter.emit(doneEvent, results) }
);
})
-je obtenir un seul résultat avec tous les totaux par jour ensemble, résume donc en gros une somme de comptage, vides, ODER pour toute la période.
Que se passe-t-il de mal à essayer de convertir la requête à utiliser dans Node.js?
J'ai peut-être résolu le problème, Node exécute la requête différemment de la ligne de commande, donc le regroupement n'est pas groupé par l'élément de hachage 'd' de' timestamp' mais par 'timestamp.d' – trobrock
upon - ce n'est pas node.js en soi, mais, pilote natif-mongodb-native (https://github.com/christkv/node-mongodb-native). Vous pouvez vérifier comment exactement l'opération a été implémentée par le pilote en parcourant le code. –