MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Objekt.bsonSize()

In MongoDB können Sie Object.bsonSize() verwenden Methode, um die Größe eines Dokuments in Bytes zurückzugeben.

Beispiel

Angenommen, wir haben eine Sammlung namens bars mit folgendem Dokument:

{
	"_id" : 1,
	"name" : "Boardwalk Social",
	"location" : {
		"type" : "Point",
		"coordinates" : [
			-16.919297718553366,
			145.77675259719823
		]
	},
	"categories" : [
		"Bar",
		"Restaurant",
		"Hotel"
	],
	"reviews" : [
		{
			"name" : "Steve",
			"date" : "20 December, 2020",
			"rating" : 5,
			"comments" : "Great vibe."
		},
		{
			"name" : "Lisa",
			"date" : "25 October, 2020",
			"rating" : 3,
			"comments" : "They just raised their prices :("
		},
		{
			"name" : "Kim",
			"date" : "21 October, 2020",
			"rating" : 4,
			"comments" : "Nice for Friday happy hour"
		}
	]
}

Wir können sehen, dass der location Feld enthält ein Dokument. Und die reviews Feld enthält ein Array von Dokumenten.

Lassen Sie uns zuerst Object.bsonSize() verwenden Methode, um die Größe des Dokuments der obersten Ebene zurückzugeben.

Object.bsonsize(db.bars.findOne())

Ergebnis:

502

Wir können sehen, dass das gesamte Dokument 502 Byte groß ist.

Beachten Sie, dass ich findOne() verwende und nicht find() . Der Grund dafür ist find() gibt statt des Dokuments selbst einen Cursor zurück. Das findOne() -Methode hingegen gibt das eigentliche Dokument zurück und ihre Ergebnisse sollten daher korrekt sein.

Unterdokumente

Lassen Sie uns Object.bsonSize() verwenden um die Größe der location zu überprüfen Feld.

Wir können die Punktnotation verwenden, um den Wert von location zu erhalten Feld:

Object.bsonsize(
  db.bars.findOne().location
  )

Ergebnis:

61

In diesem Fall ist das Dokument 61 Byte groß.

Nur um sicherzugehen, hier ist, was wir tatsächlich an Object.bsonSize() übergeben haben Methode:

db.bars.findOne().location

Ergebnis:

{
	"type" : "Point",
	"coordinates" : [
		-16.919297718553366,
		145.77675259719823
	]
}

Das ist also das Dokument mit 61 Byte.

Dokumente in Arrays

Wir können auch die Größe von Dokumenten abrufen, die Elemente eines Arrays sind.

Beispiel:

Object.bsonsize(
  db.bars.findOne().reviews[0]
  )

Ergebnis:

91

MongoDB-Arrays sind nullbasiert, daher ist dieses Dokument die erste Überprüfung.

Wir können das Argument selbst ausführen, um das gesamte Dokument zu sehen:

db.bars.findOne().reviews[0]

Ergebnis:

{
	"name" : "Steve",
	"date" : "20 December, 2020",
	"rating" : 5,
	"comments" : "Great vibe."
}

Projektionen

Wir können Object.bsonSize() verwenden -Methode, um die Größe des von einer Projektion zurückgegebenen Dokuments zurückzugeben. Dazu müssen wir lediglich die Projektion in unserer Abfrage angeben.

Beispiel:

Object.bsonsize(
    db.bars.findOne(
      {},
      {
        _id: 0,
        location: 1
      }
    )
)

Ergebnis:

76

In diesem Fall erhalten wir eine Größe von 76.

Sie haben vielleicht bemerkt, dass in unserem vorherigen Beispiel der location Feld war 61 Bytes, aber jetzt sind es 76.

Was ist los?

Nun, wenn wir wie in diesem Beispiel Projektionen verwenden, geben wir tatsächlich ein äußeres Dokument zurück, das den location enthält Feldname sowie dessen Wert.

Diese Projektion gibt Folgendes zurück:

db.bars.findOne(
    {},
    {
      _id: 0,
      location: 1
    }
  )

Ergebnis:

{
	"location" : {
		"type" : "Point",
		"coordinates" : [
			-16.919297718553366,
			145.77675259719823
		]
	}
}

In unserem früheren Beispiel verlief unsere Abfrage jedoch folgendermaßen:

db.bars.findOne().location

Und dies zurückgegeben:

{
	"type" : "Point",
	"coordinates" : [
		-16.919297718553366,
		145.77675259719823
	]
}

Unser Projektionsbeispiel gab also ein größeres Dokument zurück, da es sowohl den Feldnamen als auch den Wert zurückgab. Und unser früheres Beispiel gab ein kleineres Dokument zurück, da es nur den Wert zurückgab.

Aggregationspipeline

Wenn Sie die Aggregationspipeline verwenden, können Sie $bsonSize verwenden Operator, um die Größe eines Dokuments zu erhalten.

Sie können auch $binarySize verwenden -Operator, um die Größe des Inhalts einer Zeichenfolge oder eines Binärwerts in Byte abzurufen.