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

Berapa jumlah maksimum parameter yang diteruskan ke $in query di MongoDB?

Kueri itu sendiri adalah dokumen . MongoDB membatasi ukuran dokumen (mulai versi 2.4.0+) hingga 16 MB.

Sungguh, apa yang Anda lakukan dengan find adalah:

db.collectionName.find(queryDoc)

di mana 'queryDoc' adalah seperti:

{ 'fieldOne' : { $in : [ 1, 2, 3, 4] } }

Untuk menemukan jumlah maksimum nilai yang dapat Anda berikan ke kueri $in, gunakan bsonsize perintah:

mongos> Object.bsonsize([1])
16
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4] } })
74
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5] } })
85
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6] } })
96

Jadi, Anda dapat melihat bahwa setiap bilangan bulat tambahan berukuran 11 byte. Bukan 11 bit, 11 BYTE. Ini karena cara BSON secara internal menyimpan angka masing-masing setidaknya 64 bit, ditambah pembungkusnya. Ini dapat dengan mudah dilihat dengan:

mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 69000] } })
107
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 6900000] } })
107
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 69000000000] } })
107
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 69000000000000] } })
107
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 6900000000000000] } })
107
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 690000000000000000] } })
107
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 69000000000000000000] } })
107
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 6900000000000000000000] } })
107
mongos> Object.bsonsize({ 'fieldOne' : { $in : [ 1, 2, 3, 4, 5, 6, 69000000000000000000000000] } })
107

Jadi, berapa pun ukuran nomor individu, itu adalah bsonsize yang sama.

Tentang Pertanyaan Itu Sendiri:Seberapa besar dokumen kueri itu?

Menambahkan ini untuk kueri satu bidang dengan klausa $in, di pymongo, melalui prompt javascript mongos, apa pun, semuanya menghasilkan fakta tambahan yang sama untuk ukuran maksimum kueri $in:

mongos> Object.bsonsize({ 'a' : { '$in' : [1] }})
34
mongos> Object.bsonsize({ '' : { '$in' : [1] }})
33
mongos> Object.bsonsize({ '' : { '$in' : [] }})
22
  • Dokumen kueri itu sendiri berukuran 22 byte;
  • Setiap byte dari nama bidang menambahkan satu byte;
  • Setiap angka yang ditambahkan ke klausa $in menambahkan 11 byte.

Jadi, Anggap Anda memiliki nama bidang satu byte (minimal, sungguh), maksimum Anda adalah:

mongos> 16*1024*1024
16777216
mongos> (16*1024*1024) - 22 - 1 
16777193
mongos> ((16*1024*1024) - 22 -1) / 11
1525199.3636363635

JAWABAN:1.525.198 (Itu 1,5 juta. Itu cukup besar.)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mengekstrak tanggal yang dibuat dari Mongo ObjectID

  2. MongoDB ::apakah ID Mongo unik di seluruh koleksi?

  3. GridFS di Spring Data MongoDB

  4. Paginasi dengan MongoDB

  5. MongoDB dot (.) dalam nama kunci