MongoDB - Begrenzte Sammlungen

Capped collectionssind zirkuläre Sammlungen mit fester Größe, die der Einfügereihenfolge folgen, um eine hohe Leistung beim Erstellen, Lesen und Löschen von Vorgängen zu unterstützen. Mit Rundschreiben bedeutet dies, dass bei Erschöpfung der der Sammlung zugewiesenen festen Größe das älteste Dokument in der Sammlung gelöscht wird, ohne dass explizite Befehle angegeben werden.

Begrenzte Sammlungen beschränken Aktualisierungen der Dokumente, wenn die Aktualisierung zu einer erhöhten Dokumentgröße führt. Da mit einer Kappe versehene Sammlungen Dokumente in der Reihenfolge des Festplattenspeichers speichern, wird sichergestellt, dass die Dokumentgröße die auf der Festplatte zugewiesene Größe nicht erhöht. Mit einer Kappe versehene Sammlungen eignen sich am besten zum Speichern von Protokollinformationen, Cache-Daten oder anderen Daten mit hohem Datenvolumen.

Erstellen einer begrenzten Sammlung

Um eine begrenzte Sammlung zu erstellen, verwenden wir den normalen Befehl createCollection, jedoch mit capped Option als true und Angeben der maximalen Größe der Sammlung in Bytes.

>db.createCollection("cappedLogCollection",{capped:true,size:10000})

Zusätzlich zur Sammlungsgröße können wir auch die Anzahl der Dokumente in der Sammlung mithilfe von begrenzen max Parameter -

>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

Wenn Sie überprüfen möchten, ob eine Sammlung begrenzt ist oder nicht, verwenden Sie Folgendes isCapped Befehl -

>db.cappedLogCollection.isCapped()

Wenn eine Sammlung vorhanden ist, die Sie in Capped konvertieren möchten, können Sie dies mit dem folgenden Code tun:

>db.runCommand({"convertToCapped":"posts",size:10000})

Dieser Code würde unsere vorhandene Sammlung konvertieren posts zu einer begrenzten Sammlung.

Abfragen der begrenzten Sammlung

Standardmäßig zeigt eine Suchabfrage für eine begrenzte Sammlung die Ergebnisse in der Einfügereihenfolge an. Wenn Sie jedoch möchten, dass die Dokumente in umgekehrter Reihenfolge abgerufen werden, verwenden Sie diesort Befehl wie im folgenden Code gezeigt -

>db.cappedLogCollection.find().sort({$natural:-1})

Es gibt nur wenige andere wichtige Punkte in Bezug auf begrenzte Sammlungen, die es zu wissen gilt -

  • Wir können keine Dokumente aus einer begrenzten Sammlung löschen.

  • In einer begrenzten Sammlung sind keine Standardindizes vorhanden, auch nicht im Feld _id.

  • Beim Einfügen eines neuen Dokuments muss MongoDB nicht nach einem Platz suchen, an dem neues Dokument auf der Festplatte gespeichert werden kann. Das neue Dokument kann blind am Ende der Sammlung eingefügt werden. Dies macht Einfügevorgänge in begrenzten Sammlungen sehr schnell.

  • In ähnlicher Weise gibt MongoDB beim Lesen von Dokumenten die Dokumente in derselben Reihenfolge zurück, in der sie auf der Festplatte vorhanden sind. Dies macht den Lesevorgang sehr schnell.