Als u de grootte van een document in MongoDB moet retourneren, kunt u het volgende gebruiken:
- De
$bsonSize
aggregatie pijpleiding operator - De
Object.bsonSize()
methode
Hieronder staan voorbeelden van elke benadering.
Voorbeeldgegevens
Voor de volgende voorbeelden gebruiken we een verzameling genaamd products
met de volgende documenten:
{ "_id" : 1, "product" : { "name" : "Shirt - Short Sleeves", "color" : "White" } } { "_id" : 2, "product" : { "name" : "Cap", "color" : "Green" } } { "_id" : 3, "product" : { "name" : "Travel Pack", "color" : "Light Blue" } }
Merk op dat elk productveld een ingesloten document bevat.
We kunnen de grootte van het hele document teruggeven, of alleen het ingesloten object.
De $bsonSize
Aggregatiepijplijnoperator
We kunnen de $bsonSize
. gebruiken operator met de $$ROOT
systeemvariabele om de grootte van het hele document te krijgen. De $$ROOT
variabele verwijst naar het document dat momenteel door de pijplijn wordt verwerkt.
Voorbeeld:
db.products.aggregate([
{
$project: {
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Resultaat:
{ "_id" : 1, "rootSize" : 81 } { "_id" : 2, "rootSize" : 63 } { "_id" : 3, "rootSize" : 76 }
In dit geval krijgen we de grootte van alle documenten in de verzameling, maar u kunt deze altijd filteren op slechts één of meer documenten.
Om de grootte van de ingesloten documenten te krijgen, kunnen we de $$ROOT
. vervangen variabele met de veldnaam van de documenten.
Voorbeeld:
db.products.aggregate([
{
$project: {
"documentSize": { $sum: { $bsonSize: "$product" } }
}
}
])
Resultaat:
{ "_id" : 1, "documentSize" : 54 } { "_id" : 2, "documentSize" : 36 } { "_id" : 3, "documentSize" : 49 }
In dit geval is de veldnaam product
en dus gebruiken we $product
om naar dat veld te verwijzen.
Zie MongoDB $bsonSize
voor meer informatie en voorbeelden.
De Object.bsonSize()
Methode
De Object.bsonSize()
methode is een andere manier om de grootte van een document te krijgen.
Voorbeeld:
Object.bsonsize(
db.products.findOne()
)
Resultaat:
81
Deze methode retourneert alleen de grootte en niet meer.
Merk op dat ik de findOne()
. heb gebruikt methode in plaats van de find()
methode. Ik deed dit omdat find()
geeft alleen een cursor terug, terwijl findOne()
geeft het eigenlijke document terug.
We kunnen de grootte van het ingesloten document verkrijgen door het toe te voegen met behulp van puntnotatie:
Object.bsonsize(
db.products.findOne().product
)
Resultaat:
54
We kunnen de grootte van het volgende document krijgen door zijn _id
. op te geven als het query-argument:
Object.bsonsize(
db.products.findOne({_id:2}).product
)
Resultaat:
36
Zie MongoDB Object.bsonSize()
voor meer informatie en voorbeelden.