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.)