2013-05-16 3 views

Répondre

2

(Pensez à inclure le calcul retiring dans le cadre du document User lorsque vous l'insérez (précalculer il))

Vous pouvez utiliser MapReduce aussi bien, qui peut être plus efficace que d'utiliser $where en fonction de la façon dont vous utilisez les résultats (plus, les résultats seraient conservés). Voici un exemple en utilisant le shell MongoDB:

var map=function(){ 
    if (this.retirement - this.age < 10) { 
     emit(this.user_id, this.user_id, this.retirement - this.age); 
    } 
}; 

var reduce=function(key, values) { 
    return Array.sum(values); 
}; 

Puis Execute:

db.users.mapReduce(map, reduce, {out: 'retiring' }) 

Résultats:

> db.retiring.find() 
{ "_id" : "bcd001", "value" : 9 } 

Vous pouvez utiliser alors le modèle de mise à jour incrémentale décrit here.

+0

Nice, je ne savais pas à ce sujet merci! –

Questions connexes