Di MongoDB, Anda dapat menggunakan Object.bsonSize()
metode untuk mengembalikan ukuran dokumen dalam byte.
Contoh
Misalkan kita memiliki koleksi yang disebut bars
dengan dokumen berikut:
{ "_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" } ] }
Kita dapat melihat bahwa location
lapangan berisi dokumen. Dan reviews
bidang berisi larik dokumen.
Pertama, mari kita gunakan Object.bsonSize()
metode untuk mengembalikan ukuran dokumen tingkat atas.
Object.bsonsize(db.bars.findOne())
Hasil:
502
Kita dapat melihat bahwa keseluruhan dokumen adalah 502 byte.
Perhatikan bahwa saya menggunakan findOne()
dan bukan find()
. Alasannya adalah karena find()
mengembalikan kursor, bukan dokumen itu sendiri. findOne()
metode, di sisi lain, mengembalikan dokumen yang sebenarnya dan karena itu hasilnya harus akurat.
Subdokumen
Mari kita gunakan Object.bsonSize()
untuk memeriksa ukuran location
lapangan.
Kita dapat menggunakan notasi titik untuk mendapatkan nilai location
bidang:
Object.bsonsize(
db.bars.findOne().location
)
Hasil:
61
Dalam hal ini, dokumen adalah 61 byte.
Untuk memastikan, inilah yang sebenarnya kami berikan ke Object.bsonSize()
metode:
db.bars.findOne().location
Hasil:
{ "type" : "Point", "coordinates" : [ -16.919297718553366, 145.77675259719823 ] }
Jadi itu adalah dokumen yang berukuran 61 byte.
Dokumen dalam Array
Kami juga dapat mengambil ukuran dokumen yang merupakan elemen array.
Contoh:
Object.bsonsize(
db.bars.findOne().reviews[0]
)
Hasil:
91
Array MongoDB berbasis nol, jadi dokumen ini adalah tinjauan pertama.
Kita dapat menjalankan argumen itu sendiri untuk melihat seluruh dokumen:
db.bars.findOne().reviews[0]
Hasil:
{ "name" : "Steve", "date" : "20 December, 2020", "rating" : 5, "comments" : "Great vibe." }
Proyeksi
Kita dapat menggunakan Object.bsonSize()
metode untuk mengembalikan ukuran dokumen yang dikembalikan oleh proyeksi. Untuk melakukan ini, kita hanya perlu memberikan proyeksi dalam kueri kita.
Contoh:
Object.bsonsize(
db.bars.findOne(
{},
{
_id: 0,
location: 1
}
)
)
Hasil:
76
Dalam hal ini, kami mendapatkan ukuran 76.
Anda mungkin telah memperhatikan bahwa dalam contoh kami sebelumnya, location
bidang adalah 61 byte, tetapi sekarang menjadi 76.
Ada apa?
Nah, saat kita menggunakan proyeksi, seperti dalam contoh ini, kita sebenarnya mengembalikan dokumen luar yang berisi location
nama bidang serta nilainya.
Inilah yang dihasilkan oleh proyeksi ini:
db.bars.findOne(
{},
{
_id: 0,
location: 1
}
)
Hasil:
{ "location" : { "type" : "Point", "coordinates" : [ -16.919297718553366, 145.77675259719823 ] } }
Namun, dalam contoh kami sebelumnya, kueri kami menjadi seperti ini:
db.bars.findOne().location
Dan mengembalikan ini:
{ "type" : "Point", "coordinates" : [ -16.919297718553366, 145.77675259719823 ] }
Jadi contoh proyeksi kami mengembalikan dokumen yang lebih besar, karena fakta bahwa itu mengembalikan nama bidang dan nilainya. Dan contoh kami sebelumnya mengembalikan dokumen yang lebih kecil karena fakta bahwa itu hanya mengembalikan nilainya.
Pipa Agregasi
Saat menggunakan pipa agregasi, Anda dapat menggunakan $bsonSize
operator untuk mendapatkan ukuran dokumen.
Anda juga dapat menggunakan $binarySize
operator untuk mendapatkan ukuran string atau konten nilai biner dalam byte.