web-dev-qa-db-fra.com

Cadre d’agrégation MongoDB correspondant OR

Est-il possible de faire un OR dans la correspondance $?

Je veux dire quelque chose comme ça:

db.articles.aggregate(
    { $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);
86
Gergely Németh
$match: { $or: [{ author: 'dave' }, { author: 'john' }] }

Comme si, puisque l'opérateur $match Prenait juste ce que vous mettriez normalement dans la fonction find()

149
Sammaye

Dans ce cas particulier, où vous êtes $or- ing le même champ, le $in opérateur serait un meilleur choix, également parce que cela améliore la lisibilité:

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

Selon la documentation MongoDB, utiliser $in est recommandé dans ce cas:

$ ou versus $ dans

Lorsque vous utilisez $ ou avec <expressions> qui sont des vérifications d'égalité pour la valeur du même champ, utilisez l'opérateur $ in au lieu de $ ou de l'opérateur.

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

72
Amol M Kulkarni