相关大体知识结构查看图入口:
声明: 从 mongoDB 3.0 开始ensureIndex被废弃,使用 createIndex 创建索引。但是还是兼容之前的ensureIndex,因此本文案例也一直使用这个函数。 可以使用 db.version() 查看自己目前的版本
1. mongo默认的集合是test.
eg1: 增加数据库 增加数据表增加数据
-- show dbs 查询集合[ 查询所有的数据库 ]
-- use classOne [ 切换集合,即使这个集合是不存在的,只要不插入数据,就不会报错 ][ 切换到指定数据库classOne的上下文,可以在此上下文中管理 classOne 数据库以及其中的集合等 ]
-- db.student_number.insert({x:1}) [ 插入一条数据前,会自动创建classOne这个集合 ]
eg2: 删除数据库
-- show dbs [ 就会查询到这个 classOne 集合 ]
-- use classOne
-- db.dropDatabase() [ 删除切换的当前集合或者数据库 ]
eg3: 查看某个集合下面的表 查询当前表中数据
-- use test
-- show collections [ 查看当前库或者集合下面的表 或者是显示所有的集合 ] == db.getCollectionNames()
-- use classOne
-- db.student_number.find() [不带参数的find代表查询当前表下面的所有的数据]
-- db.student_number.findOne() [ 查询student_number表中的第一条数据 ]
eg4: 利用for循环添加数据 [ mongo支持js的循环 ]
-- for(i=1; i<100; i++) db.student_number.insert({x:i}) [ 遍历插入100条数据数据 ]
-- db.student_number.find().count() [ 查询刚才修改数据总数 ]
-- db.student_number.find().skip(3). limit(2).sort({x:1}) [ 限制查询条件,跳过前三条数据,只查2条,并且按照x排序 ]
eg5: 查询数据库服务器的状态
-- db.serverStatus()
eg6: 根据某一个条件更新,保护其他不被修改覆盖
-- db.student_number.insert({x:100,y:100,z:100})
-- db.student_number.update({x:100},{y:101},{z:101}) [ 根据x:100查找,修改其他值 没用处 不在测试 ]
-- db.student_number.update({x:100},{$set:{ y:66 }}) [ 根据x:100查找修改y:66,保护z的值不变 ]
eg7: 查询指定数据库的统计信息
-- use imooc
-- db.stats()
eg8: 更新一条不存在的数据的时候 自动创建 update({},{},true)
-- db.student_number.update({y:1001},{y:10002},true) [ 假设这条数y:1001据是不存在的,在更新y:10002时候就会执行插入 ]
eg9: 同时更新多条数据 mongo的设计update本身只会更新第一条数据,除了上面的第三个参数为,还有第四个参数
-- db.student_numer2.update({x:1}, {$set:{x:2}},false,true ) [ 假设有三条x:1的数据在student_numer2中,我们通过这条语句就会一次全部更新x:2, 在多语句的更新中只能是用$set条件 ]
eg10: 删除表跟表数据
-- db.classone.remove({x:1}) [ 假设有多条x:1的数据存在,酱紫就会删除这些数据 ]
-- db.classone.drop() [ 将会删除classone的这个表或者叫做集合 返回值是true或者false]
-- show tables [ 查看表 ]
eg 11: 索引 在数据量比较大时需要使用索引加快查询速度 相关知识查看
-- db.classone.getIndexes() [ 查看集合的索引情况,在数据量很多的时候是不会返回结果的 ]
-- db.classone.ensureIndex({x:1}) [ 创建索引 x :1 代表正向排序,文档数目较多,创建比较费时间,不能直接使用这个命令,需要在创建数据库之前就创建好索引,索引是在插入数据之后才创建的,但是为了高效的查询这点牺牲也很应该 ]
eg 12 创建过期索引 以及删除索引
-- db.imooc_2.ensureIndex({time:1},{expireAfterSeconds:30}) [ 设置该imooc_2这张表的过期时间是30s ]
--db.imooc_2.insert({time:new Date()}) [ 将当前的时间插入到time中,但是不会这么精准,请查看原因 ]
--db.imooc_2.dropIndex({x:1,y:1}) [ 删除当前的多值索引 {x:1,y:1} ]
声明: 从 mongoDB 3.0 开始ensureIndex被废弃,使用 createIndex 创建索引。但是还是兼容之前的ensureIndex,因此本文案例也一直使用这个函数。 可以使用 db.version() 查看自己目前的版本
1. mongo默认的集合是test.
eg1: 增加数据库 增加数据表增加数据
-- show dbs 查询集合[ 查询所有的数据库 ]
-- use classOne [ 切换集合,即使这个集合是不存在的,只要不插入数据,就不会报错 ][ 切换到指定数据库classOne的上下文,可以在此上下文中管理 classOne 数据库以及其中的集合等 ]
-- db.student_number.insert({x:1}) [ 插入一条数据前,会自动创建classOne这个集合 ]
eg2: 删除数据库
-- show dbs [ 就会查询到这个 classOne 集合 ]
-- use classOne
-- db.dropDatabase() [ 删除切换的当前集合或者数据库 ]
eg3: 查看某个集合下面的表 查询当前表中数据
-- use test
-- show collections [ 查看当前库或者集合下面的表 或者是显示所有的集合 ] == db.getCollectionNames()
-- use classOne
-- db.student_number.find() [不带参数的find代表查询当前表下面的所有的数据]
-- db.student_number.findOne() [ 查询student_number表中的第一条数据 ]
eg4: 利用for循环添加数据 [ mongo支持js的循环 ]
-- for(i=1; i<100; i++) db.student_number.insert({x:i}) [ 遍历插入100条数据数据 ]
-- db.student_number.find().count() [ 查询刚才修改数据总数 ]
-- db.student_number.find().skip(3). limit(2).sort({x:1}) [ 限制查询条件,跳过前三条数据,只查2条,并且按照x排序 ]
eg5: 查询数据库服务器的状态
-- db.serverStatus()
eg6: 根据某一个条件更新,保护其他不被修改覆盖
-- db.student_number.insert({x:100,y:100,z:100})
-- db.student_number.update({x:100},{y:101},{z:101}) [ 根据x:100查找,修改其他值 没用处 不在测试 ]
-- db.student_number.update({x:100},{$set:{ y:66 }}) [ 根据x:100查找修改y:66,保护z的值不变 ]
eg7: 查询指定数据库的统计信息
-- use imooc
-- db.stats()
eg8: 更新一条不存在的数据的时候 自动创建 update({},{},true)
-- db.student_number.update({y:1001},{y:10002},true) [ 假设这条数y:1001据是不存在的,在更新y:10002时候就会执行插入 ]
eg9: 同时更新多条数据 mongo的设计update本身只会更新第一条数据,除了上面的第三个参数为,还有第四个参数
-- db.student_numer2.update({x:1}, {$set:{x:2}},false,true ) [ 假设有三条x:1的数据在student_numer2中,我们通过这条语句就会一次全部更新x:2, 在多语句的更新中只能是用$set条件 ]
eg10: 删除表跟表数据
-- db.classone.remove({x:1}) [ 假设有多条x:1的数据存在,酱紫就会删除这些数据 ]
-- db.classone.drop() [ 将会删除classone的这个表或者叫做集合 返回值是true或者false]
-- show tables [ 查看表 ]
eg 11: 索引 在数据量比较大时需要使用索引加快查询速度 相关知识查看
-- db.classone.getIndexes() [ 查看集合的索引情况,在数据量很多的时候是不会返回结果的 ]
-- db.classone.ensureIndex({x:1}) [ 创建索引 x :1 代表正向排序,文档数目较多,创建比较费时间,不能直接使用这个命令,需要在创建数据库之前就创建好索引,索引是在插入数据之后才创建的,但是为了高效的查询这点牺牲也很应该 ]
eg 12 创建过期索引 以及删除索引
-- db.imooc_2.ensureIndex({time:1},{expireAfterSeconds:30}) [ 设置该imooc_2这张表的过期时间是30s ]
--db.imooc_2.insert({time:new Date()}) [ 将当前的时间插入到time中,但是不会这么精准,请查看原因 ]
--db.imooc_2.dropIndex({x:1,y:1}) [ 删除当前的多值索引 {x:1,y:1} ]
Mongodb 中一些基本的经常使用的命令总结:
1. db.version() // 查看版本信息
2. db.serverStatus() // 查看服务配置的信息
3.