Aus ihrer offiziellen Dokumentation selbst oder- versus-in :
Wenn Sie Dokumente wie unten haben:
[
{
"price": 100
},
{
"price": 200
},
{
"price": 300
},
{
"price": 400
},
{
"price": 500
}
]
Wenn Sie Dokumente erhalten möchten, wo price
ist gleich 100
oder 500
, Abfrage wie :
db.collection.find({ price: { $in: [ 100, 500 ] } })
Wenn Sie wie oben vorgehen, ist die Abfrage einfach und sauber. Sie können auch $or
verwenden statt $in
aber warum sollten Sie die Kurzschreibweise verlieren und versuchen, Ihre Abfrage sperrig aussehen zu lassen, indem Sie immer wieder weitere Objekte desselben Felds hinzufügen?
Standardmäßig, wenn Sie logisches OR
ausführen möchten Bei zwei verschiedenen Operatoren würden Sie $or
verwenden , Aber wenn man $or
verwendet auf demselben Feld :
db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })
Wie oben, wenn Sie mehrere verschiedene Bedingungen für dasselbe Feld haben, verwenden Sie es.
Diese beiden Abfragen liefern dasselbe Ergebnis, wenn sie ausgeführt werden, aber wenn Sie $in
verwenden - ob Eingabewerte gerade Zahlen sind oder Zeichenfolgen oder andere Typen sein können, bei denen Eingabewerte genau mit Werten von price
übereinstimmen Feld in Dokumenten, aber wenn Sie $or
verwenden Sie suchen nach unterschiedlichen Bedingungen für dasselbe Feld.
Test : mongoplayground