sql >> Database >  >> NoSQL >> MongoDB

Hoe bestelt MongoDB hun documenten in één verzameling?

Het heet natuurlijke orde :

natural order

De volgorde waarin de database verwijst naar documenten op schijf. Dit is de standaard sorteervolgorde. Zie $natural en Return in Natural Order .

Dit bevestigt dat je ze over het algemeen in dezelfde volgorde krijgt als waarin je ze hebt geplaatst, maar dat is niet gegarandeerd, zoals je hebt opgemerkt.

Terug in natuurlijke volgorde

De $natural parameter retourneert items volgens hun natuurlijke volgorde in de database. Deze volgorde is een interne implementatiefunctie en u moet niet vertrouwen op een bepaalde structuur erin.

Indexgebruik

Zoekopdrachten met een sortering op $natural bestellen doe niet gebruik indexen om aan het querypredikaat te voldoen, met de volgende uitzondering:Als het querypredicaat een gelijkheidsvoorwaarde is op de _id veld { _id: <value> } , dan de zoekopdracht met de sortering op $natural bestelling kan de _id . gebruiken index.

MMAPv1

Doorgaans weerspiegelt de natuurlijke volgorde de invoegvolgorde, met de volgende uitzondering voor de MMAPv1-opslagengine. Voor de MMAPv1-opslagengine komt de natuurlijke volgorde niet overeen met de invoegvolgorde als de documenten worden verplaatst vanwege documentgroei of als door verwijderingsbewerkingen ruimte vrijkomt die vervolgens wordt ingenomen door nieuw ingevoegde documenten.

Vanzelfsprekend, zoals de genoemde documenten, moet u niet vertrouw op deze standaardvolgorde (Deze volgorde is een interne implementatiefunctie en u mag niet vertrouwen op een bepaalde structuur daarin. ).

Als je de dingen moet sorteren, gebruik dan de sorteeroplossingen.

In principe moeten de volgende twee aanroepen documenten in dezelfde volgorde retourneren (aangezien de standaardvolgorde $natural is) ):

db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()

Als u op een ander veld wilt sorteren (bijv. name ) je kunt dat doen:

db.mycollection.find().sort({ "name": 1 })


  1. MongoDB $isoWeek

  2. 6 Beste MapReduce Job Optimization-technieken

  3. Is MongoDB op de een of andere manier beperkt tot een enkele kern?

  4. Inleiding tot Redis-gegevensstructuren:gesorteerde sets