MongoDB基础命令及操作
Posted 鱼大大
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB基础命令及操作相关的知识,希望对你有一定的参考价值。
MongoDB:NoSQL数据库
- MongoDB中的重要指示点
- MongoDB中的三要素
- 数据库
- 集合
- 文档
- MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去记录的形式类似于json数据
- MongoDB中集合中的数据不同于关系型数据库中的数据,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, 表示删除多条
以上是关于MongoDB基础命令及操作的主要内容,如果未能解决你的问题,请参考以下文章
node.js零基础详细教程:node.js操作mongodb,及操作方法的封装