MongoDB基础命令以及操作示例详解
前言
Mongodb是一个非关系型数据库软件(NoSql),以类似json的形式bson存储数据,bson有二进制的json的意思,官方说bson的效率更高,很适合存储类似于对象的数据,这里权当把自己学习的过程记录下来。
关于MongoDB的安装方法给大家推荐下面这几篇文章:
1、Linux下安装MongoDB的实现步骤
2、window下安装配置mongodb的教程图解
3、Mac中mongoDB的安装与卸载步骤详解
好了,下面开始本文的正文:
MongoDB:NoSQL数据库
MongoDB中的重要指示点
1、MongoDB中的三要素
- 数据库
- 集合
- 文档
2、MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去记录的形式类似于json数据
3、MongoDB中集合中的数据不同于关系型数据库中的数据,MongoDB中文档结构可以不同,因此扩展性非常好
MongoDB的优点:易扩展、高性能、灵活的数据模型
MongoDB的缺点:数据重复存储,占用空间大
MongoDB启动
命令行(终端)启动命令
- mongod:运行服务端
- mongo:启动客户端
查看帮助命令,默认端口,日志位置
- 查看帮助:mongod–help
- 查看是否启动成功:psajx|grepmongod
- 默认端⼝:27017
- 日志的位置:/var/log/mongodb/mongod.log
mongodb客户端
- 启动本地客户端:mongo
- 查看帮助:mongo–help
- 退出:exit或者ctrl+c
MongoDB的基础命令
操作数据库命令
查看当前的数据库:db
查看所有的数据库:showdbs/showdatabases
切换数据库:usedb_name删除当前的数据库:db.dropDatabase()
- 切换到没有的数据库,添加数据会自动创建
显示当前数据库状态:db.stats()
当前数据库版本:db.version()
查看当前数据库的链接机器地址:db.getMongo()
操作集合的命令
不手动创建集合:
- 向不存在的集合中第⼀次加⼊数据时,集合会被创建出来
手动创建结合:
创建用户:db.createUser({user:"laowang",pwd:"123456",roles:[{role:"userAdmin",db:"stu"}]})
- db.createCollection(name,options)
- db.createCollection("stu")
- db.createCollection("sub",{capped:true,size:10})
- 参数capped:默认值为false表示不设置上限,值为true表示设置上限
- 参数size:当capped值为true时,需要指定此参数,表示上限⼤⼩,单位为字节
档达到上限时,会将之前的数据覆盖,最早添加的数据移出,其余上移,最后添加在最后一条
显示当前所以用户:show users
删除用户:db.removeUser("userName")
查看集合:showcollections
删除集合:db.集合名称.drop()
mongo中的数据类型
ObjectID:⽂档ID
String:字符串,最常⽤,必须是有效的UTF-8
Boolean:存储⼀个布尔值,true或false
Integer:整数可以是32位或64位,这取决于服务器
Double:存储浮点值
Arrays:数组或列表,多个值存储到⼀个键
Object:⽤于嵌⼊式的⽂档,即⼀个值为⼀个⽂档
Null:存储Null值
Timestamp:时间戳,表示从1970-1-1到现在的总秒数
Date:存储当前⽇期或时间的UNIX时间格式
注意事项:
创建⽇期语句如下:参数的格式为YYYY-MM-DD每个⽂档都有⼀个属性,为_id,保证每个⽂档的唯⼀性
- newDate('2017-12-20')
可以⾃⼰去设置_id插⼊⽂档,如果没有提供,那么MongoDB为每个⽂档提供了⼀个独特的_id,类型:objectID
objectID是⼀个12字节的⼗六进制数(了解):
- 前4个字节为当前时间戳
- 接下来3个字节的机器ID
- 接下来的2个字节中MongoDB的服务进程id
- 最后3个字节是简单的增量值
插入数据
db.集合名称.insert(document)插⼊⽂档时,如果不指定_id参数,MongoDB会为⽂档分配⼀个唯⼀的ObjectId类型的_id
- db.stu.insert({name:'gj',gender:1})
- db.stu.insert({_id:"20170101",name:'gj',gender:1})
插入单条指定为字典,插入多条指定为列表
保存
db.集合名称.save(document)
如果⽂档的_id已经存在则修改,如果⽂档的_id不存在则添加
区别于:insert如果存在直接报错
简单查询:
db.集合名称.find()
更新
语法: db.集合名称.update(
- 参数query:查询条件
- 参数update:更新操作符
- 参数multi:可选,默认是false,表示只更新找到的第⼀条记录,值为true表示把满⾜条件的⽂档全部更新
举例:注意:"multiupdateonlyworkswith$operators"更新全部,必须使用$set
- db.stu.update({name:'hr'},{name:'mnc'})更新一条,没有更新的字段会丢弃.
- db.stu.update({name:'hr'},{$set:{name:'hys'}})更新一条
- db.stu.update({},{$set:{gender:0}},{multi:true})更新全部
删除
语法: db.集合名称.remove(
- 参数query:可选,删除的⽂档的条件
- 参数justOne:可选,如果设为true或1,则只删除⼀条,默认false,表示删除多条
总结:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。