Ist es möglich, im $ -Match ein ODER durchzuführen?
Ich meine so etwas:
db.articles.aggregate(
{ $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);
Ist es möglich, im $ -Match ein ODER durchzuführen?
Ich meine so etwas:
db.articles.aggregate(
{ $or: [ $match : { author : "dave" }, $match : { author : "john" }] }
);
Antworten:
In diesem speziellen Fall, wo Sie $or
-ing das gleiche Feld , das $in
würde Operator eine bessere Wahl sein, auch , weil es die Lesbarkeit erhöht:
$match: {
'author': {
$in: ['dave','john']
}
}
In den MongoDB-Dokumenten $in
wird in diesem Fall die Verwendung empfohlen:
$ oder versus $ in
Wenn Sie $ oder mit <Ausdrücken> verwenden, bei denen es sich um Gleichheitsprüfungen für den Wert desselben Felds handelt, verwenden Sie den Operator $ in anstelle des Operators $ oder.
https://docs.mongodb.com/manual/reference/operator/query/or/#or-versus-in