MongoDB in 數量限制

haoge0205發表於2020-01-16

1、查詢語句本身其實是一個document, 最大為16MB(3.4,4.0 的限制,官方文件)

2、查詢語句本身,也就是{ '' : { '$in' : [] }}, 大小為 22位元組

3、每增加一個欄位名,增加一位位元組

4、in裡面每增加一個引數,大小固定增加11位元組

5、如下:


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


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

數字不管多大,位元組是一樣的


mongos> Object.bsonsize({ 'a' : { '$in' : [1] }})

34

mongos> Object.bsonsize({ '' : { '$in' : [1] }})

33

mongos> Object.bsonsize({ '' : { '$in' : [] }})

22

The query document itself is 22 bytes;

Each byte of the field name adds a single byte;

Each number added to the $in clause adds 11 bytes.


mongos> 16*1024*1024

16777216

mongos> (16*1024*1024) - 22 - 1 

16777193

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

1525199.3636363635


THE ANSWER: 1,525,198 (That's 1.5 million. That's pretty big.)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-2673591/,如需轉載,請註明出處,否則將追究法律責任。

相關文章