134 votes

Condition de requête MongoDb sur la comparaison de 2 champs

J'ai une collection T, avec 2 champs : Grade1 et Grade2, et je veux sélectionner ceux avec la condition Grade1 > Grade2, comment puis-je obtenir une requête comme dans MySQL ?

Select * from T Where Grade1 > Grade2

145voto

Ian White Points 204

Tu peux utiliser un $ où. Il suffit de savoir que ce sera assez lent (doit exécuter du code Javascript sur chaque enregistrement) donc combinez avec des requêtes indexées si vous le pouvez.

db.T.find( { $where: function() { return this.Grade1 > this.Grade2 } } );

ou plus compact :

db.T.find( { $where : "this.Grade1 > this.Grade2" } );

UPD pour mongodb v.3.6+

vous pouvez utiliser $expr comme décrit dans la réponse récente

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X