数据库常用命令
use db:切换/创建数据库,数据库存在时则切换到该数据库,不存在时则创建该数据库
show dbs:查询所有数据库,此时发现并没有刚才创建的mydb数据库,这是因为mongodb只有在该数据库插入数据时才会真正创建
db.dropDatabase():删除当前使用的数据库
db.getName():查看当前db的名字
db.stats():查看当前db的状态,包括集合数量,平均文档大小,数据大小,索引数量和大小等
db.version():当前db版本
db.repairDatabase():修复当前数据库,该命令可以整理碎片,回收磁盘空间,注意整理期间会加锁
db.copyDatabase(“db1”,“db2”,“ip”):从指定IP上复制db1的数据到本机的db2
集合常用命令
db.createCollection(name,options):创建一个集合
name参数:集合的名字
options参数:可选项,可选以下值
字段 类型 描述 capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参 数。 autoIndexId 布尔 (可选)如为 true,自动在 _id 字段创建索引。默认为 true。 size 数值 (可选)为固定集合指定一个最大值(以字节计)。 如果 capped 为 true,也需要指定该字段。 max 数值 (可选)指定固定集合中包含文档的最大数量。
- 此时再查看数据库,发现mydb数据库已经创建
show collections:显示当前数据库的集合
db.collectionName:使用某个集合
db.collection.count():查看集合的记录条数
db.collection.dataSize():查看集合数据大小
db.collection.totalIndexSize();查看集合索引大小
db.collection.totalSize():查看集合总大小
db.collection.renameCollection("newName"):集合重命名
db.collection.drop():删除当前集合
文档常用命令
db.user.insert({"name":"lzx","age":21,"sex":"男"}):插入文档
db.user.save({"name":"lzx","age":21,"sex":"男"}):保存文档,如果文档不存在会自动创建
save和insert的区别在于save不但具有插入功能,还具有更新功能,如果不存在则插入,存在则更新,而insert如果存在会报错
数据是否重复是根据_id字段判断
- 之所以可以插入两条同样的数据,是因为插入时未指定_id字段,自动生成的id不一致
- 当指定相同id插入时,抛出异常
- 即便修改年龄字段,只要id字段重复,依旧抛出异常
- 利用save方法进行年龄的更新
db.users.find():查看文档
更新文档:
mongoDB中更新文档可以通过db.collection.save()或者db.collection.update()来更新
save之前已经介绍过了,需要指定_id字段去查询对应记录进行更新
db.collection.update(查询条件,整个文档或者修改器,upsert:boolean,multi:boolean或mutli文档,writeConcern:异常信息等级)
查询条件是传入文档的部分信息用来定位需要修改的文档,查询条件语句与find中的查询方式一致
第二个参数是整个文档或者修改器,当参数是整个文档时,传入的文档替换已有的文档,如果是修改器时,只做对应的修改
upsert参数可选,这个参数的意思是如果不存在需要更新的记录,是否写入新文档,默认false
mutli参数可选,这个参数的意思是更新找到的几条记录,默认false,只更新扎到的第一条记录,true则符合条件的全部更新
writeConcern参数可选,抛出异常的级别,作用是保障更新操作的可靠性
- 该语句的意思是更新name为"lzx"的文档,将age更新为18,sex更新为none,如果没找到符合条件的文档也不插入,如果找到符合条件的全部更新,响应结果为符合条件的2个文档,0个插入,2个更新。
删除文档:
db.collection.remove(查询条件,justOne:boolean,writeConcern:异常信息等级):删除文档
第一个参数为查询条件
第二个参数为是否仅删除一个,默认false,删除全部符合条件的文档
writeConcern参数可选,抛出异常的级别,作用是保障更新操作的可靠性
- 删除name为lzx的文档,响应结果为删除了两个文档
查询满足条件的文档的个数
db.collection.count(查询条件)
- pretty方法是将查询的结果格式化
索引常用命令
创建索引:
db.collection.createIndex(keys,options):3.0之后版本
db.collection.ensureIndex(keys,options):3.0之前版本
keys是你要创建的索引字段,1升序,-1降序,可以指定多个字段创建组合索引
options参数是可选参数,可选值如下:
参数 类型 描述 background boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式 创建索引,即增加 "background" 可选参数。 "background" 默认 值为false。 unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序 顺序生成一个索引名称。 dropDups Boolean 3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false. sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如 果设置为true的话,在索引字段中不会查询出不包含对应字段的文 档.。默认值为 false. expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间 v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版 本。 weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索 引字段的得分权重。 default_language string 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语 language_override string 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认 的language,默认值为 language.
- 创建一个name为firstIndex的组合索引,索引字段为name升序,age降序
查看集合所有索引:db.users.getIndexes()
查看集合总索引大小:db.users.totalIndexSize()
读取当前集合的所有Index信息:db.users.reIndex()
删除指定索引:db.users.dropIndex("name")
删除集合所有索引:db.users.dropIndexs()
- _id字段的索引无法删除,会默认生成主键索引