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" }] }
);
$match: { $or: [{ author: 'dave' }, { author: 'john' }] }
Comme si, puisque l'opérateur $match
Prenait juste ce que vous mettriez normalement dans la fonction find()
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