Det kallas naturlig ordning :
natural order
Ordningen i vilken databasen refererar till dokument på disk. Detta är standardsorteringsordningen. Se
$natural
ochReturn 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 })