Jeśli chcesz zwrócić rozmiar dokumentu w MongoDB, możesz użyć następującego:
$bsonSizeoperator 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.