MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB Object.bsonSize()

W MongoDB możesz użyć Object.bsonSize() metoda zwracania rozmiaru dokumentu w bajtach.

Przykład

Załóżmy, że mamy kolekcję o nazwie bars z następującym dokumentem:

{
	"_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"
		}
	]
}

Widzimy, że location pole zawiera dokument. Oraz reviews pole zawiera tablicę dokumentów.

Najpierw użyjmy Object.bsonSize() metoda zwracania rozmiaru dokumentu najwyższego poziomu.

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

Wynik:

502

Widzimy, że cały dokument ma 502 bajty.

Zauważ, że używam findOne() a nie find() . Powodem tego jest to, że find() zwraca kursor, a nie sam dokument. findOne() Z drugiej strony metoda zwraca rzeczywisty dokument, a zatem jej wyniki powinny być dokładne.

Dokumenty podrzędne

Użyjmy Object.bsonSize() aby sprawdzić rozmiar location pole.

Możemy użyć notacji z kropkami, aby uzyskać wartość location pole:

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

Wynik:

61

W tym przypadku dokument ma 61 bajtów.

Dla pewności, oto, co faktycznie przekazaliśmy do Object.bsonSize() metoda:

db.bars.findOne().location

Wynik:

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

To jest dokument, który ma 61 bajtów.

Dokumenty w tablicach

Możemy również pobrać rozmiar dokumentów, które są elementami tablicy.

Przykład:

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

Wynik:

91

Tablice MongoDB są liczone od zera, więc ten dokument jest pierwszą recenzją.

Możemy uruchomić sam argument, aby zobaczyć cały dokument:

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

Wynik:

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

Projekcje

Możemy użyć Object.bsonSize() metoda zwracania rozmiaru dokumentu zwróconego przez projekcję. Aby to zrobić, musimy po prostu podać projekcję w naszym zapytaniu.

Przykład:

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

Wynik:

76

W tym przypadku otrzymujemy rozmiar 76.

Być może zauważyłeś, że w naszym poprzednim przykładzie location pole było 61 bajtów, ale teraz jest 76.

Co się dzieje?

Cóż, kiedy używamy prognoz, tak jak w tym przykładzie, w rzeczywistości zwracamy zewnętrzny dokument, który zawiera location nazwa pola oraz jego wartość.

Oto, co zwraca ta projekcja:

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

Wynik:

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

Jednak w naszym poprzednim przykładzie nasze zapytanie wyglądało tak:

db.bars.findOne().location

I zwrócił to:

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

Więc nasz przykład projekcji zwrócił większy dokument, ponieważ zwrócił zarówno nazwę pola, jak i wartość. A nasz wcześniejszy przykład zwrócił mniejszy dokument, ponieważ zwracał tylko wartość.

Potok agregacji

Korzystając z potoku agregacji, możesz użyć $bsonSize operatora, aby uzyskać rozmiar dokumentu.

Możesz także użyć $binarySize operator, aby uzyskać rozmiar ciągu lub zawartości wartości binarnej w bajtach.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kompresja prefiksu indeksu w MongoDB 3.0 WiredTiger

  2. MongoDB $sinh

  3. MongoDB $indexOfCP

  4. Zestaw replik MongoDB z prostym uwierzytelnianiem hasłem

  5. Wydajność zapytań MongoDB dla ponad 5 milionów rekordów