Server-Mongo-Version ist 3.4.4. Verbunden durch Studio 3T. Wenn ich so in IntelliShell AbfrageDaten können nicht mit aggregate in mongodb abgerufen werden
db.orders.aggregate([
{ $limit: 10 },
{ $skip: 10 }
])
ich nichts zurückgegeben.
Allerdings, wenn ich die $ Limit und $ wechseln überspringen,
db.orders.aggregate([
{ $skip: 10 },
{ $limit: 10 }
])
Es funktioniert gut.
Nun haben Sie gefragt * "Holen Sie mir nur 10 Ergebnisse und dann über 10 von ihnen überspringen" *, was sonst würden Sie ehrlich erwarten? Auf der anderen Seite sagt die zweite Aussage * "Überspringe 10 Ergebnisse und gib dann die nächsten 10 zurück" *. Es ist also nicht schwer zu erkennen, wie unterschiedlich diese sind, wenn man sie semantisch formuliert. –
Siehe auch [$ skip + $ limit Sequenzoptimierung] (https://docs.mongodb.com/manual/core/aggregation-pipeline-optimization/#skip-limit-sequence-optimization), die genau zeigt, wie die Sequenz intern kommt optimiert und ein direktes Beispiel dafür, warum Ihr erster Versuch fehlschlägt. Kurz gesagt, die Sekunde wird auf '{$ limit: 20}, {$ skip: 10}' optimiert. –
Aber warum behandelt Mongodb sie nicht als das gleiche? –