【MongoDB】MongoDB基本入门01
来源:互联网 发布:搜索文件软件 编辑:程序博客网 时间:2024/06/11 21:34
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。
客户端一些常用操作命令
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
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, //用时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
阅读全文
0 0
- 【MongoDB】MongoDB基本入门01
- 【MongoDB】MongoDB基本入门02
- MongoDB入门基本问题
- mongodb入门之mongodb基本语法
- Java mongodb 基本操作入门
- Java mongoDB 基本操作入门
- MongoDB入门(01)
- [MongoDB]MongoDB Java 入门
- 学习MongoDB--(2-2):MongoDB入门(Shell基本操作)
- 【MongoDB】MongoDB入门(一)基本操作&常用命令
- mongodb入门-3 数据类型--基本数据类型
- MongoDB PHP基本操作,快速入门
- mongodb入门
- MongoDB入门
- MongoDB入门
- mongoDB 入门
- mongoDB 入门
- mongoDB 入门
- 关于基于UDP的多线程网络编程中的packet锁死的问题
- C++ 日期 & 时间
- Java基础之异常
- 2017/11/21
- ACSII码画图
- 【MongoDB】MongoDB基本入门01
- Spark参数
- Audiophobia UVA
- Servlet处理表单数据(成长记录)
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- vue学习-过滤器
- input file图片上传并回显
- 如何在VS2013+QT5.3环境下使用自定义信号与槽函数
- 个人总结42