来自:匿名
你这篇文章的标题应该叫<> $ node > var bson = require(“./bson.js”) undefined > bson.encode({a:12}) 7 <Buffer 0c 00 00 00 10 61 00 0c 00 00 00 00> > bson.encode({a:’12′}) 10 <Buffer 0f 00 00...
View Article来自:Zang MingJie
bson存储一个字符串需要 n+5 = 长度(4字节) + 字符串(n字节) + (1字节) mongo内部, 所有数字都是用long存储, 所以单个数字是8字节 你比较一下 {“a”:NumberInt(12)} 与 {“a”:”12″} 的大小试试
View Article来自:Zang MingJie
关于第三部分, 数据变大后会不会移动, 是由Padding Factor控制的, 具体参考 http://www.mongodb.org/display/DOCS/Padding+Factor
View Article来自:Iammutex
首先mongodb内部的数字分三种类型,int32,int64和double(也是64位的) 然后你这个比对是有问题的,计算{a:1}战用体积的时候,有两种计算情况。一种是它就是整个对象(比如单独计算{a:1}对象的大小)。另一种是它是多个属性中的一个属性(比如计算{b:1}对象变成{b:1,a:1}后增加的长度)。 比如整个对象就是{a:12},它占用长度应该是12字节,其bson结构如下:...
View Article来自:Zang MingJie
我用的是mingo 2.0.2 你错在这些地方: 1. mongo内部存储数字使用的都是long, 不会用int的 2. 除去通用的type使用的空间, string需要额外5字节, int, long都不需要额外的空间, 所以 int = 4 < 2字节string = 7 < long = 8 人人都会犯错误, 希望写文章之前能仔细研究一下, 尽量少犯错
View Article来自:Iammutex
嗯,又仔细看了BSON的实现,确实当时没看全,string类型本身确实会在前面再存储一个4字节的string长度,加上最后一个,一共5字节开销。这个我确实整错了。 错的最主要的原因是在做测试的时候使用了mongo客户端去计算,mongo客户端使用的是int64类型做表示数字的。8字节大于5+2字节了。...
View Article来自:zabery
Mongo Shell 支持的javascript语言,js只支持double,但是MongoDB是支持int32,int64和double,所以如果使用其他驱动开发的话,存入的数据数字类型可以是int32,但是在Mongo Shell中都是double型的
View Article