Jeśli chcesz zwrócić rozmiar dokumentu w MongoDB, możesz użyć następującego:
$bsonSize
operator potoku agregacjiObject.bsonSize()
metoda
Poniżej znajdują się przykłady każdego podejścia.
Przykładowe dane
W poniższych przykładach użyjemy kolekcji o nazwie products
z następującymi dokumentami:
{ "_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" } }
Zwróć uwagę, że każde pole produktu zawiera osadzony dokument.
Możemy zwrócić rozmiar całego dokumentu lub tylko osadzonego obiektu.
$bsonSize
Operator potoku agregacji
Możemy użyć $bsonSize
operator z $$ROOT
zmienna systemowa, aby uzyskać rozmiar całego dokumentu. $$ROOT
zmienna odnosi się do dokumentu, który jest aktualnie przetwarzany przez potok.
Przykład:
db.products.aggregate([
{
$project: {
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Wynik:
{ "_id" : 1, "rootSize" : 81 } { "_id" : 2, "rootSize" : 63 } { "_id" : 3, "rootSize" : 76 }
W tym przypadku otrzymujemy rozmiar wszystkich dokumentów w kolekcji, ale zawsze możesz przefiltrować go do jednego lub kilku dokumentów.
Aby uzyskać rozmiar osadzonych dokumentów, możemy zastąpić $$ROOT
zmienna z nazwą pola dokumentów.
Przykład:
db.products.aggregate([
{
$project: {
"documentSize": { $sum: { $bsonSize: "$product" } }
}
}
])
Wynik:
{ "_id" : 1, "documentSize" : 54 } { "_id" : 2, "documentSize" : 36 } { "_id" : 3, "documentSize" : 49 }
W tym przypadku nazwa pola to product
dlatego używamy $product
aby odnieść się do tego pola.
Zobacz MongoDB $bsonSize
aby uzyskać więcej informacji i przykładów.
Object.bsonSize()
Metoda
Object.bsonSize()
metoda to kolejny sposób na uzyskanie rozmiaru dokumentu.
Przykład:
Object.bsonsize(
db.products.findOne()
)
Wynik:
81
Ta metoda zwraca tylko rozmiar i nic więcej.
Zauważ, że użyłem findOne()
metoda zamiast find()
metoda. Zrobiłem to, ponieważ find()
zwraca tylko kursor, podczas gdy findOne()
zwraca rzeczywisty dokument.
Możemy uzyskać rozmiar osadzonego dokumentu, dołączając go za pomocą notacji kropkowej:
Object.bsonsize(
db.products.findOne().product
)
Wynik:
54
Możemy uzyskać rozmiar następnego dokumentu, określając jego _id
jako argument zapytania:
Object.bsonsize(
db.products.findOne({_id:2}).product
)
Wynik:
36
Zobacz MongoDB Object.bsonSize()
aby uzyskać więcej informacji i przykładów.