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

MongoDB $binarySize

Dari MongoDB 4.4, Anda dapat menggunakan $binarySize operator pipeline agregasi untuk mengembalikan ukuran string tertentu atau konten nilai data biner dalam byte.

Ia menerima ekspresi valid apa pun selama ia memutuskan ke string atau nilai data biner. Argumennya juga bisa null , dalam hal ini, $binarySize mengembalikan null .

Contoh

Misalkan kita memiliki koleksi yang disebut posts dengan dokumen berikut:

{
	"_id" : 1,
	"title" : "Hello World!",
	"body" : "This is a test post for the purposes of testing",
	"tags" : [
		"html",
		"css",
		"sql",
		"xml"
	],
	"status" : null
}

Kita dapat menggunakan $binarySize operator untuk memeriksa ukuran berbagai bidang.

Contoh:

db.posts.aggregate([
  {
    $project: {
      "titleSize": { $binarySize: "$title" },
      "bodySize": { $binarySize: "$body" }
    }
  }
])

Hasil:

{ "_id" : 1, "titleSize" : 12, "bodySize" : 47 }

Dalam hal ini, kami mengembalikan ukuran biner dari title bidang dan body lapangan.

Nilai Null

Jika nilai bidang yang ditentukan adalah null , $binarySize operator akan mengembalikan null .

Contoh:

db.posts.aggregate([
  {
    $project: {
      "statusSize": { $binarySize: "$status" }
    }
  }
])

Hasil:

{ "_id" : 1, "statusSize" : null }

Dalam hal ini, status bidang dalam dokumen kami adalah null , dan jadi $binarySize mengembalikan null .

Tipe Data Salah

Seperti yang disebutkan, $binarySize menerima ekspresi valid apa pun selama itu diselesaikan menjadi string, nilai data biner, atau null .

Berikut adalah contoh yang terjadi jika Anda memberikan ekspresi yang diselesaikan ke jenis BSON yang berbeda:

db.posts.aggregate([
  {
    $project: {
      "tagsSize": { $binarySize: "$tags" }
    }
  }
])

Hasil:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$binarySize requires a string or BinData argument, found: array",
	"code" : 51276,
	"codeName" : "Location51276"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Dalam hal ini, kami mencoba mencari ukuran array, tetapi itu bukan salah satu jenis BSON yang didukung, jadi kami mendapatkan kesalahan.

Namun, kita masih bisa mendapatkan ukuran elemen larik individual (selama itu salah satu jenis yang didukung).

Contoh:

db.posts.aggregate([
  {
    $project: {
      "tagsSize": { $binarySize: { $arrayElemAt: [ "$tags", 0 ] } }
    }
  }
])

Hasil:

{ "_id" : 1, "tagsSize" : 4 }

Dalam contoh ini, kita mendapatkan ukuran elemen array pertama (array berbasis nol, jadi 0 mengacu pada elemen pertama).

Ukuran Dokumen

MongoDB juga memiliki $bsonSize operator, yang memungkinkan Anda mendapatkan ukuran dokumen.

Cara lain untuk mendapatkan ukuran dokumen adalah dengan menggunakan Object.bsonSize() metode.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menghapus N sejumlah dokumen di mongodb

  2. Istirahat data starter boot musim semi, batasan @Notnull tidak berfungsi

  3. Versi MongoDB apa yang diinstal di Ubuntu?

  4. $nin dengan $expr

  5. Data pegas MongoDb:MappingMongoConverter menghapus _class