Jika Anda perlu mengembalikan ukuran dokumen di MongoDB, Anda dapat menggunakan yang berikut ini:
$bsonSize
operator pipa agregasiObject.bsonSize()
metode
Di bawah ini adalah contoh dari setiap pendekatan.
Contoh Data
Untuk contoh berikut, kami akan menggunakan koleksi yang disebut products
dengan dokumen sebagai berikut:
{ "_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" } }
Perhatikan bahwa setiap bidang produk berisi dokumen yang disematkan.
Kami dapat mengembalikan ukuran seluruh dokumen, atau hanya objek yang disematkan.
$bsonSize
Operator Pipa Agregasi
Kita dapat menggunakan $bsonSize
operator dengan $$ROOT
variabel sistem untuk mendapatkan ukuran seluruh dokumen. $$ROOT
variabel mengacu pada dokumen yang saat ini sedang diproses oleh pipeline.
Contoh:
db.products.aggregate([
{
$project: {
"rootSize": { $sum: { $bsonSize: "$$ROOT" } }
}
}
])
Hasil:
{ "_id" : 1, "rootSize" : 81 } { "_id" : 2, "rootSize" : 63 } { "_id" : 3, "rootSize" : 76 }
Dalam hal ini kami mendapatkan ukuran semua dokumen dalam koleksi, tetapi Anda selalu dapat memfilternya ke satu atau beberapa dokumen saja.
Untuk mendapatkan ukuran dari dokumen yang disematkan, kita dapat mengganti $$ROOT
variabel dengan nama bidang dokumen.
Contoh:
db.products.aggregate([
{
$project: {
"documentSize": { $sum: { $bsonSize: "$product" } }
}
}
])
Hasil:
{ "_id" : 1, "documentSize" : 54 } { "_id" : 2, "documentSize" : 36 } { "_id" : 3, "documentSize" : 49 }
Dalam hal ini, nama bidangnya adalah product
jadi kami menggunakan $product
untuk merujuk ke bidang itu.
Lihat MongoDB $bsonSize
untuk informasi dan contoh lebih lanjut.
The Object.bsonSize()
Metode
Object.bsonSize()
metode adalah cara lain untuk mendapatkan ukuran dokumen.
Contoh:
Object.bsonsize(
db.products.findOne()
)
Hasil:
81
Metode ini hanya mengembalikan ukuran dan tidak lebih.
Perhatikan bahwa saya menggunakan findOne()
metode alih-alih find()
metode. Saya melakukan ini karena find()
hanya mengembalikan kursor, sedangkan findOne()
mengembalikan dokumen yang sebenarnya.
Kita bisa mendapatkan ukuran dokumen yang disematkan dengan menambahkannya menggunakan notasi titik:
Object.bsonsize(
db.products.findOne().product
)
Hasil:
54
Kita bisa mendapatkan ukuran dokumen berikutnya dengan menentukan _id
its sebagai argumen kueri:
Object.bsonsize(
db.products.findOne({_id:2}).product
)
Hasil:
36
Lihat MongoDB Object.bsonSize()
untuk informasi dan contoh lebih lanjut.