comment puis-je trouver les dossiers où l'âge de Soustraire de retraite est inférieur à 10MongoDB: opérations arithemtic dans .Find()
db.users.insert({
user_id: "bcd001",
age: 56,
retirement: 65,
status: "A"
})
comment puis-je trouver les dossiers où l'âge de Soustraire de retraite est inférieur à 10MongoDB: opérations arithemtic dans .Find()
db.users.insert({
user_id: "bcd001",
age: 56,
retirement: 65,
status: "A"
})
Vous avez deux options, soit vous utilisez le cadre d'agrégation, ou vous faites quelque chose comme celui-ci
db.users.find({$where: '(this.retirement - this.age > 10)'})
Plus d'informations sur le cadre d'agrégation (même si cela semble exagéré pour votre cas):
(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.
Nice, je ne savais pas à ce sujet merci! –