Pokud potřebujete vrátit velikost dokumentu v MongoDB, můžete použít následující:
$bsonSize
provozovatel agregačního potrubí- Funkce
Object.bsonSize()
metoda
Níže jsou uvedeny příklady každého přístupu.
Ukázková data
V následujících příkladech použijeme kolekci nazvanou products
s následujícími dokumenty:
{ "_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" } }
Všimněte si, že každé pole produktu obsahuje vložený dokument.
Můžeme vrátit velikost celého dokumentu nebo jen vloženého objektu.
$bsonSize
Operátor agregačního potrubí
Můžeme použít $bsonSize
operátor s $$ROOT
systémová proměnná pro získání velikosti celého dokumentu. $$ROOT
proměnná odkazuje na dokument, který je právě zpracováván kanálem.
Příklad:
db.products.aggregate([
{
$project: {
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Výsledek:
{ "_id" : 1, "rootSize" : 81 } { "_id" : 2, "rootSize" : 63 } { "_id" : 3, "rootSize" : 76 }
V tomto případě získáme velikost všech dokumentů v kolekci, ale vždy ji můžete filtrovat pouze na jeden nebo několik dokumentů.
Chcete-li získat velikost vložených dokumentů, můžeme nahradit $$ROOT
proměnná s názvem pole dokumentů.
Příklad:
db.products.aggregate([
{
$project: {
"documentSize": { $sum: { $bsonSize: "$product" } }
}
}
])
Výsledek:
{ "_id" : 1, "documentSize" : 54 } { "_id" : 2, "documentSize" : 36 } { "_id" : 3, "documentSize" : 49 }
V tomto případě je název pole product
a proto používáme $product
odkazovat na toto pole.
Viz MongoDB $bsonSize
pro další informace a příklady.
Object.bsonSize()
Metoda
Object.bsonSize()
metoda je další způsob, jak získat velikost dokumentu.
Příklad:
Object.bsonsize(
db.products.findOne()
)
Výsledek:
81
Tato metoda vrací pouze velikost a nic víc.
Všimněte si, že jsem použil findOne()
namísto find()
metoda. Udělal jsem to, protože find()
vrátí pouze kurzor, zatímco findOne()
vrátí skutečný dokument.
Velikost vloženého dokumentu můžeme získat připojením pomocí tečkové notace:
Object.bsonsize(
db.products.findOne().product
)
Výsledek:
54
Velikost dalšího dokumentu můžeme získat zadáním jeho _id
jako argument dotazu:
Object.bsonsize(
db.products.findOne({_id:2}).product
)
Výsledek:
36
Viz MongoDB Object.bsonSize()
pro další informace a příklady.