sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Object.bsonSize()

I MongoDB kan du bruge Object.bsonSize() metode til at returnere størrelsen af ​​et dokument i bytes.

Eksempel

Antag, at vi har en samling kaldet bars med følgende 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"
		}
	]
}

Vi kan se, at location feltet indeholder et dokument. Og reviews feltet indeholder en række dokumenter.

Lad os først bruge Object.bsonSize() metode til at returnere størrelsen af ​​dokumentet på øverste niveau.

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

Resultat:

502

Vi kan se, at hele dokumentet er på 502 bytes.

Bemærk, at jeg bruger findOne() og ikke find() . Grunden til dette er, at find() returnerer en markør i stedet for selve dokumentet. findOne() metode, på den anden side, returnerer det faktiske dokument, og dets resultater bør derfor være nøjagtige.

Underdokumenter

Lad os bruge Object.bsonSize() for at kontrollere størrelsen på location felt.

Vi kan bruge punktnotation til at få værdien af ​​location felt:

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

Resultat:

61

I dette tilfælde er dokumentet 61 bytes.

Bare for at være sikker, her er, hvad vi faktisk sendte til Object.bsonSize() metode:

db.bars.findOne().location

Resultat:

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

Så det er dokumentet på 61 bytes.

Dokumenter i arrays

Vi kan også hente størrelsen af ​​dokumenter, der er elementer i et array.

Eksempel:

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

Resultat:

91

MongoDB-arrays er nul-baserede, så dette dokument er den første anmeldelse.

Vi kan køre argumentet for sig selv for at se hele dokumentet:

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

Resultat:

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

Projektioner

Vi kan bruge Object.bsonSize() metode til at returnere størrelsen af ​​det dokument, der returneres af en projektion. For at gøre dette skal vi blot angive projektionen i vores forespørgsel.

Eksempel:

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

Resultat:

76

I dette tilfælde får vi en størrelse på 76.

Du har måske bemærket, at location i vores tidligere eksempel felt var 61 bytes, men nu er det 76.

Hvad sker der?

Nå, når vi bruger projektioner, som vi er i dette eksempel, returnerer vi faktisk et ydre dokument, der indeholder location feltnavn samt dets værdi.

Her er, hvad denne fremskrivning returnerer:

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

Resultat:

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

Men i vores tidligere eksempel gik vores forespørgsel sådan her:

db.bars.findOne().location

Og returnerede dette:

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

Så vores projektionseksempel returnerede et større dokument, på grund af det faktum, at det returnerede både feltnavnet og værdien. Og vores tidligere eksempel returnerede et mindre dokument på grund af det faktum, at det kun returnerede værdien.

Aggregation Pipeline

Når du bruger aggregeringspipelinen, kan du bruge $bsonSize operatør for at få størrelsen på et dokument.

Du kan også bruge $binarySize operator for at få størrelsen af ​​en streng eller binær værdis indhold i bytes.


  1. Kompression i node.js

  2. Sådan kommer du i gang med databaseautomatisering

  3. Sådan summerer du værdien af ​​en nøgle på tværs af alle dokumenter i en MongoDB-samling

  4. FieldPath-feltnavne må ikke indeholde '.' i $gruppe