# Bson结构解析以及$type和_id(ObjectID)原理详细分析
###1、BSON数据类型及对应的整型及字符型(BSON别名)
每个ducument都是一个Bson数据,所谓的Bson就是对Json的扩展,每个数据中都有一个Key和Value,Value对应的就是以下类型:
###2、使用{$type:别名}来查询
db.mycollection.insert({"name":"123"});
db.mycollection.insert({"name":"456"});
db.mycollection.insert({"name":undefined});
printjson(db.mycollection.find({"name":{$type:6}}).toArray());
###3、ObjectID
无索引的情况的,我们的数据叫做heap。
有了主键索引,那么就是一个BTree
ObjectId("5789fb58631178e7844d11d8") 生成规则的解释
4byte: 5789fb58(16进制) => 1468660568(10进制时间戳) 2016/7/16 17:18:48
3byte: 631178 => 机器的唯一标识码
2byte: e784 => 进程ID
3byte: 4d11d8 => 随机数
通过上面的这种方式来讲objectID做到全局唯一