MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

2 Cara Mendapatkan Ukuran Dokumen di MongoDB

Jika Anda perlu mengembalikan ukuran dokumen di MongoDB, Anda dapat menggunakan yang berikut ini:

  • $bsonSize operator pipa agregasi
  • Object.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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregasi Mongodb $group, batasi panjang array

  2. Kueri MongoDB dengan elemMatch untuk data array bersarang

  3. Mengekspor modul database luwak

  4. bagaimana cara melepaskan caching yang digunakan oleh Mongodb?

  5. Kesalahan:queryTxt ETIMEOUT saat menghubungkan ke MongoDb Atlas menggunakan luwak