欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MongoDB基础命令及操作

程序员文章站 2022-05-19 11:05:51
MongoDB:NoSQL数据库 MongoDB中的重要指示点 MongoDB中的三要素 数据库 集合 文档 MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去记录的形式类似于json数据 MongoDB中集合中的数据不同于关系型数据库中的数据,MongoDB ......

mongodb:nosql数据库

  • mongodb中的重要指示点
    • mongodb中的三要素
      • 数据库
      • 集合
      • 文档
    • mongodb中的数据存储是以bson的形式存储的,bson是二进制的json,所以看上去记录的形式类似于json数据
    • mongodb中集合中的数据不同于关系型数据库中的数据,mongodb中文档结构可以不同,因此扩展性非常好

mongodb的优点:易扩展、高性能、灵活的数据模型

mongodb的缺点:数据重复存储,占用空间大

 

mongodb启动

  • 命令行(终端)启动命令

    • mongod : 运行服务端
    • mongo: 启动客户端
  • 查看帮助命令,默认端口,日志位置

    • 查看帮助:mongod –help
    • 查看是否启动成功:ps ajx|grep mongod
    • 默认端⼝:27017
    • 日志的位置:/var/log/mongodb/mongod.log
  • mongodb客户端
    • 启动本地客户端:mongo
    • 查看帮助:mongo –help
    • 退出:exit或者ctrl+c

 

mongodb的基础命令

操作数据库命令

  • 查看当前的数据库:db
  • 查看所有的数据库:show dbs /show databases
  • 切换数据库:use db_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")
  • 查看集合:show collections

  • 删除集合:db.集合名称.drop()

 

mongo中的数据类型

  • object id: ⽂档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, 保证每个⽂档的唯⼀性
    • new date('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: <boolean>})
    • 参数query:查询条件
    • 参数update:更新操作符
    • 参数multi:可选, 默认是false,表示只更新找到的第⼀条记录, 值为true表示把满⾜条件的⽂档全部更新
  • 举例:注意:"multi update only works with $ 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: <boolean>})
    • 参数query:可选,删除的⽂档的条件
    • 参数justone:可选, 如果设为true或1, 则只删除⼀条, 默认false, 表示删除多条