Bei zusammengesetzten Indizes, bei denen eines der indizierten Felder ein Array ist, verwendet MongoDB nur entweder eine Unter- oder eine Obergrenze für die Bereichsabfrage, um sicherzustellen, dass korrekte Übereinstimmungen zurückgegeben werden. Siehe SERVER-958 ein Beispiel, bei dem die Einschränkung auf die obere und untere Indexgrenze das erwartete Dokument nicht finden würde.
Wenn sich Ihre Bereichsabfrage auf dem Array-Feld befindet, können Sie möglicherweise den Code $elemMatch
-Operator funktioniert nicht bei Nicht-Array-Feldern, daher hilft dies Ihrem Anwendungsfall leider nicht. Sie können SERVER-6050 ansehen/upvoten:Erwägen Sie, $elemMatch auf Nicht-Arrays anzuwenden
im MongoDB Issue Tracker.
Es gibt auch ein offenes Problem SERVER-7959:Möglicherweise unerwartete Scans mit zusammengesetzten Indizes, wenn einige Felder aus mehreren Schlüsseln bestehen dieses Verhalten beschreiben.