122 votes

Correspondance avec le cadre d'agrégation de MongoDB OU

Est-il possible de faire un OU dans le $match ?

Je veux dire quelque chose comme ça :

db.articles.aggregate(
    { $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);

207voto

Sammaye Points 21778
$match: { $or: [{ author: 'dave' }, { author: 'john' }] }

Ainsi, puisque le $match L'opérateur prend juste ce que vous mettriez normalement dans le fichier find() fonction

104voto

Amol M Kulkarni Points 4105

Dans ce cas particulier, où vous êtes $or -ing le même domaine le $in serait un meilleur choix, également parce qu'il améliore la lisibilité :

$match: { 
  'author': { 
    $in: ['dave','john'] 
  } 
}

D'après la documentation de MongoDB, l'utilisation de l'option $in est recommandé dans ce cas :

$or contre $in

Lorsque l'on utilise $or avec des <expressions> qui sont des égalités d'égalité pour la valeur du même champ, utilisez l'opérateur $in au lieu de l'opérateur de l'opérateur $or.

https://docs.mongodb.com/manual/reference/operator/query/or/#or-versus-in

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