相比关系型数据库(RDB)
MongoDB的数据结构为一个数据库包含多个集合,一个集合包含多个文档(类似JSON)。
Objectid
Objectid是一个12字节的BSON格式数据,包含4字节时间戳,3个字节的机器标识码,2个字节的进程id,3个字节的随机数。
索引
1.单字段索引
2.复合索引
常见索引语句:
db.collection.createIndex(keys, options)
options参数有:
background: 默认为false,当设置该值为true时,表示创建索引操作在后台运行,并不会阻塞数据库其他操作。
unique:默认为false,当设置该值为true时,表示创建的是唯一索引,像用户信息中的身份证号码等具有唯一性的信息,添加唯一索引可以保证数据的正确性。
sparse:默认为false,当设置该值为true时,表示创建的是稀疏索引,那么索引不包含字段所在文档就不会被扫描。
explain
添加索引时,需要通过explain分析,索引是否生效,以及优化查询。
基本原理与mysql等类似,性能参数有所不同,需要进一步巩固。
{
executionSuccess: true,
nReturned: 10,
executionTimeMillis: 23, //执行时间
totalKeysExamined: 6603, //检查了6603个索引
totalDocsExamined: 6603,
executionStages: {
stage: 'SORT',
nReturned: 10, //最终找到10条结果
executionTimeMillisEstimate: 0,
works: 6616,
advanced: 10,
needTime: 6605,
needYield: 0,
saveState: 51,
restoreState: 51,
isEOF: 1,
invalidates: 0,
sortPattern: { final_score: -1 },
memUsage: 1757,
memLimit: 33554432,
limitAmount: 10,
inputStage: {
stage: 'SORT_KEY_GENERATOR',
nReturned: 6603,
executionTimeMillisEstimate: 0,
works: 6605,
advanced: 6603,
needTime: 1,
needYield: 0,
saveState: 51,
restoreState: 51,
isEOF: 1,
invalidates: 0,
inputStage: [Object]
}
},
allPlansExecution: []
}