sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur beställer MongoDB sina dokument i en samling?

Det kallas naturlig ordning :

natural order

Ordningen i vilken databasen refererar till dokument på disk. Detta är standardsorteringsordningen. Se $natural och Return in Natural Order .

Detta bekräftar att du i allmänhet får dem i samma ordning som du satte in, men det är inte garanterat – som du märkte.

Återgå i naturlig ordning

$natural parametern returnerar objekt enligt deras naturliga ordning i databasen. Denna beställning är en intern implementeringsfunktion, och du bör inte förlita dig på någon speciell struktur inom den.

Indexanvändning

Frågor som inkluderar sortering efter $natural beställa inte använd index för att uppfylla frågepredikatet med följande undantag:Om frågepredikatet är ett likhetsvillkor på _id fältet { _id: <value> } , sedan frågan med sorteringen efter $natural order kan använda _id index.

MMAPv1

Vanligtvis återspeglar den naturliga ordningen insättningsordningen med följande undantag för MMAPv1-lagringsmotorn. För MMAPv1-lagringsmotorn återspeglar den naturliga ordningen inte insättningsordningen om dokumenten flyttas på grund av dokumenttillväxt eller borttagningsåtgärder frigör utrymme som sedan tas upp av nyligen infogade dokument.

Uppenbarligen bör du, precis som de nämnda dokumenten, inte lita på denna standardordning (Denna beställning är en intern implementeringsfunktion, och du bör inte förlita dig på någon speciell struktur inom den. ).

Om du behöver sortera sakerna, använd sorteringslösningarna.

I princip bör följande två anrop returnera dokument i samma ordning (eftersom standardordningen är $natural ):

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

Om du vill sortera efter ett annat fält (t.ex. name ) kan du göra det:

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


  1. Mongodb :$in-operatör kontra många enskilda frågor

  2. Sömlös skala för dina MongoDB-servrar

  3. Spring boot caching med redis,nyckel har \xac\xed\x00\x05t\x00\x06

  4. Problemet med små filer