mongoDB 简介
参考文档
https://www.runoob.com/mongodb/mongodb-tutorial.html mongoDB 菜鸟教程
https://mongodb.net.cn/manual/ mongoDB 中文官网
1. mongoDB 概述
MongoDB 是一个流行的开源文档型数据库,它使用类似 JSON 的文档模型存储数据,这使得数据存储变得非常灵活。
MongoDB 是一个基于文档的 NoSQL 数据库,由 MongoDB Inc. 开发。
MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
注释:关系型数据库 与 非关系型数据库 的区别,如下:
2. mongoDB 的相关概念与术语
SQL与 MongoDB 的区别
注释:其他术语详见菜鸟教程 https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html
3. 安装 mongoDB
下载绿色版:http://www.winwin7.com/soft/10457.html
注释:将绿色版的软件包,解压到目录:D:\0_software\mongoDB\install
解压包的根目录如下:
bin目录如下:
4. 启动 mongod 服务 与 mongo 客户端 (windows系统下)
(1)启动 mongod 服务: 在 bin 目录下执行如下指令 mongod -- dbpath [存放数据库的地址]
(2)启动 mongo 客户端:在 bin 目录下执行如下指令 mongo (node.js 操作 mongoDB 时,无需启动客户端)
之后,就可以在 mongo 客户端执行指令,操作 mongoDB 数据库了!
5. mongoDB 的可视化工具
虽然可以在mongo客户端直接执行指令操作数据库,但是,也有可视化工具进行直观的操作与查看。
常用的 mongoDB 可视化工具有:Robomongo、 Robo3T、adminMongo
6. mongoDB 的常见指令
注意:以下指令都是基于mongo客户端中执行的!(node.js中操作数据库的指令参考 mongoose 网站 )(1)MongoDB 的一些基本指令
help 提示一些基础指令(help/show/find)
db.help()
db.mycoll.help()
db.mycoll.find().help()
db.stats() 显示当前DB状态
db.version() 查看当前DB版本
db.getMongo() 查看当前DB的链接机器地址
db.getPrevError() 查看之前的错误信息
db.resetError() 清楚之前的错误信息
(2)数据库 database 的操作指令
show dbs 查询所有数据库
db / db.getName() 查看当前的数据库(无需参数)
use <db_name> 创建/切换数据库
db.dropDatabase() 删除当前数据库(无需参数)
db.copyDatabase("form_db_name", "to_db_name") 复制当前的 from_db_name 数据库到 to_db_name 数据库中(mongoDB不支持重命名数据库,但可以新建数据库后复制数据)
注意:创建空数据库之后,show dbs不能查询出该空数据库,得在该空数据库中创建数据表了才行。(database--collection/table--document/row--field/column)
(3)数据表 collection 的操作指令
show collections 查询当前数据库下的所有的数据表db.getCollectionNames() 查询当前数据库下的所有的数据表
db.getCollection("collName") 查询当前数据库下的指定名称的数据表
db.createCollection("collName", {size: 20, capped: 5, max: 100}) 创建数据表(第二个参数可选,capped表示集合有大小上限,size是字节单位,max是最大文档数)
db.collName.drop() 删除数据表
db.collName.renameCollection("collName2") 重命名数据表
db.collName.getDB() 查询指定数据表的所在数据库名称
db.collName.stats() 得到当前数据表的状态
db.collName.count() 查询数据表的数据条数
db.collName.dataSize() 查看数据表的数据空间大小
db.collName.totalSize() 得到当前数据表的总大小
db.collName.storageSize() 得到当前数据表的储存空间大小
(4)数据文档/行 document 的操作指令
db.collName.save({name: "zhangsan", age: 25 }) 添加(参数可以是 对象或数组)
db.collName.remove({ }) 删除所有记录
db.collName.remove({age: 12}) 删除
db.collName.update({age: 25}, {$set: {name: "changeName"}}, false, true) 修改【$set - -赋值】
db.collName.update({name: ‘Lisi’}, {$inc: {age: 50}}, false, true) 修改【$inc -- 增加】
db.collName.update({name: ‘Lisi’}, {$inc: {age: 50}, $set: {name: "hoho"}}, false, true) 修改【$set - -赋值,$inc -- 增加】
db.collName.find() 查询所有记录
db.collName.findOne() 查询第一条(相当于:db.userInfo.find().limit(1) )
db.collName.find({“age”: 22}) 查询记录-equal条件筛选
db.collName.find({ name: 'raykaeso', age: 22}) 查询记录-and条件筛选
db.collName.find({$or: [{age: 22}, {age: 25}]}) 查询记录-逻辑操作符条件筛选(逻辑操作符:$or、$and、$not)
db.collName.find({ age: {$gt: 22} }) 查询记录-比较操作符条件筛选(比较操作符:$gt、$gte、$lt、$lte、$eq、$ne)
db.collName.find({ age: {$gte: 25 }}).count() 查询记录-匹配符条件筛选-记录条数
db.collName.find({ name: /^A/ }) 查询记录-regexp条件筛选
db.collName.distinct("name") 去重查询
db.collName.find().sort({age: 1}) 查询记录-排序(升序)
db.collName.find().sort({age: -1}) 查询记录-排序(降序)
db.collName.find().limit(5) 查询记录-限制返回的记录条数
db.collName.find().skip(10) 查询记录-跳过n条数数据
db.collName.find().limit(10).skip(5) 查询记录-限制&跳过
db.collName.find({}, {name: 1, age: 1}) 查询-返回指定字段
db.collName.find({age: {$gt: 25}}, {name: 1, age: 1}) 查询-返回指定字段
组合处理:查询、排序、修改、删除
db.collName.findAndModify({
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: ‘a2′}, $inc: {age: 2}},
remove: true
})
7. node.js 与 mongoDB 的 交互
详见下一节 “node/expressjs 连接与操作 MongoDB”