【MongoDB】MongoDB基本入门01
2017-11-22 16:12
369 查看
NoSQL简介
NoSQL(Not Only SQL),意即“不仅仅是SQL”,指的是非关系型的数据库。非关系型数据库的优点:
1、简单的扩展(以键值对的方式存储,结构比较灵活)
2、快速的读写
3、低廉的成本
4、灵活的数据模型
缺点:
1、不提供SQL的支持
2、支持的特性不够丰富(没有事务等这些概念)
3、现有的产品不够成熟(相对于关系型数据库而言)
关系型数据库和MongoDB逻辑结构关系对比
关系型数据库:
MySQL数据库(database),表(table)、记录(rows)三个层次概念组成。
MongoDB:
Mongodb数据库(database)、集合(collection)、文档对象(document)三个层次概念组成。MongoDB里的集合对应于关系型数据库里的表,一个文档就相当于一条记录。
其中MongoDB的单个计算机可以容纳多个独立的数据库,每一个数据库都有自己的集合和权限。
同时MongoDB自带JavaScript shell,这个工具对于管理MongoDB实例的操作数据库作用非常大。
同时每一个文档(每条记录)都有一个特殊的键”_id”,它在文档所处的集合中是唯一的,相当于数据库中的表的主键。
安装MongoDB
我们只需要下载解压MongoDB之后,将环境变量配置到bin目录级别:D:\Program Files\mongodb\bin即可。
服务器端启动MongoDB
我们需要现在D盘新建一个名为mongodbpath的文件夹,然后执行如下命令:
mongod --dbpath=D:/mongodbpath
客户端连接MongoDB
我们使用如下命令:mongo localhost:27017,我们也可以直接使用
mongo命令直接进行连接默认以本机作为服务端时且端口号为默认端口的MongoDB。
客户端一些常用操作命令
命令 | 功能 |
---|---|
db | 用于查看当前操作的文档(数据库) |
show dbs | 查看所有数据库 |
use DATABASE_NAME | 无则创建数据库,有则切换到数据库 |
db.dropDatabase() | 删除当前数据库 |
show collections/show tables | 查看当前数据库中所有的集合 |
db.createCollection(‘youxin’) | 显示创建名为youxin集合(类似于数据库中的表) |
db.c1.insert({name:’gebilaowang’,age:29}) | 创建名为c1的集合 |
db.c2.remove({age:0}) | c2集合移除age为0的记录 |
MongDB查询
db.c1.find({name:’wangwu},{age:1}):表示查询c1集合条件为name=’wangwu’,返回结果字段为age字段;db.c2.find().count():查询当前集合有多少条记录;
db.c2.findOne():查询当前集合的第一条记录;
db.c2.find({age:{$gt:5}}):查找c2集合中age大于5的记录
db.c2.find({age:{$gte:5}}):查找c2集合中age大于或等于5的记录
db.c2.find({age:{$lt:5}}):查找c2集合中age小于5的记录
db.c2.find({age:{$lte:5}}):查找c2集合中age小于或等于5的记录
db.c2.find({age:{$ne:5}}):查找c2集合中age不等于5的记录
db.c2.find().skip(0).limit(10):从第1条开始查询10条记录。
db.c5.find({age:{$all:[15,55]}}):查找c2集合中age字段包含15和55。
db.c2.find({age:{$in:[15,55]}}):查找c2集合中age字段包含15或55。
db.c2.find({age:{$nin:[15,55]}}):查找c2集合中age字段不包含15也不包含55。
db.c2.find({$or:[{name:'liuyang'},{age:{$in:[15,55]}}]}):表示name=’liuyang’或者age为15或者age为55。
db.c2.find({name:{$exists:1}}):查询c2中包含name字段的记录。
MongoDB中的游标
var i = db.c2.find():获取游标i.hasNext():判断是否存在值
i.next():获取值
MongoDB更新操作
语法:db.collection.update(criteria,objNew,upsert,multi)参数说明
criteria:用于设置查询条件的对象
objNew:用于设置更新内容的对象
upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1
multi:如果有多个符合条件的记录,是否全部更新,取值为0或1
更新命令 | 功能 |
---|---|
db.c1.update({age:33},{name:’wanglihong’}); | 表示c1集合中第一个匹配age=33的记录,将name改为wanglihong,但这种改法会使其他字段覆盖 |
db.c1.update({age:33},{$set:{name:’xiaohuahua’}}) | 表示c1集合中第一个匹配age=33的记录,将name改为xiaohuahua,这个只设置name字段,不覆盖其他属性 |
db.c1.update({name:’xiaoxue’},{$set:{age:25}},0,1) | 表示的c1集合全部记录匹配name=’xiaoxue’,将会进行全局更新 |
db.c1.update({name:’xiaoxue’},{$set:{age:25}},1,1) | 表示更新的记录没有找到就新增一条 |
db.c2.update({name:’zhangsan’},{$inc:{age:1}},0,1) | 表示更新c2集合中name为zhangsan的字段,然后将age的值全部加1 |
db.c2.update({name:’zhangsan’},{$unset:{age:1}},0,1) | 表示更新c2集合中name为zhangsan的字段,然后将age这个字段去除掉 |
MongoDB索引
//往c3集合插入500万条数据 for(var i=1;i<=5000000;i++) { db.c3.insert({name:'hushiyang',age:i}); } //查询信息结果: db.c3.find({age:100}).explain() //结果: { "cursor" : "BasicCursor", "isMultiKey" : false, "n" : 1, "nscannedObjects" : 5000000, "nscanned" : 5000000, "nscannedObjectsAllPlans" : 5000000, "nscannedAllPlans" : 5000000, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 11, "nChunkSkips" : 0, "millis" : 8977, 4000 //用时8秒多 "indexBounds" : { }, "server" : "DESKTOP-D2BBINO:27017" } //c3集合age字段创建索引 db.c3.ensureIndex({age:1}) //创建唯一索引:则age不允许有重复的值 db.c3.ensureIndex({age:1},{unique:true}) //删除索引 db.c3.dropIndex({age:1})
MongoDB的数据备份
查看数据库的相关操作:db.help()
备份数据库:
将当前主机中的itcast数据库备份至D盘itcast文件夹下
mongodump -h localhost:27017 -d itcast -o D://itcast
删除数据库:
db.dropDatabase()
恢复数据库:
mongorestore -h localhost:27017 -d itcast -directoryperdb D://itcast/itcast
集合中数据导出:
将itcast数据库中的c1集合拷贝到d://itcast中的c1.xls文件中去
mongoexport -h localhost:27017 -d itcast -c c1 -o d://itcast/c1.xls
集合中数据导入
将集合备份数据导入到person集合中
mongoimport -h localhost:27017 -d itcast -c person d://itcast/c1.xls
相关文章推荐
- 文档整数mongodb入门-3 数据类型--基本数据类型
- 【MongoDB】MongoDB入门(一)基本操作&常用命令
- MongoDB java编程快速入门(内容基本总结自Mongo官方网站)
- 微信公众号开发 [01] 入门基本流程
- MongoDB PHP基本操作,快速入门
- MongoDB入门学习(二):MongoDB的基本概念和数据类型
- 【Asp.net入门2-01】C#基本功能
- Oracle RAC学习笔记:基本概念及入门 01
- Mongodb基本操作入门,增删改查和索引
- mongodb入门-3数据类型--基本数据类型
- MongoDB入门1――简介、安装及基本使用
- mongoDB 入门指南、示例(推荐--01)
- 快速入门系列--CLR--01基本概念
- mongodb入门之mongodb基本语法
- Mongodb基本操作入门,增删改查和索引
- MongoDb的基本操作快速入门
- Day57-Oracle01 - oracle体系结构、sql语句分类和结构、基本查询、函数入门
- hibernate_01基本入门和基本配置
- mongoDB入门需要了解的基本知识
- MongoDB基础入门002--基本操作,增删改查