是什么?
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
特点:高性能、易部署、易使用,存储数据非常方便。
安装+配置
第一步:安装mongdb
1.选择custome
2.修改安装地址 C:\MongDB
3.修改环境变量 找到bin路径 C:\MongDB\bin 配置到全局环境变量
win10---计算机---属性---高级系统设置---高级---环境变量---系统变量---找到Path---编辑---新建---把路径复制进去
第二步:启动mongo
1. 进入mongoDB 目录 ,新建 data文件夹 ,用来保存数据
2. 进入 data文件夹, 在data内新建 db 文件夹 用来保存数据库数据
3. 命令cmd执行 mongod --dbpath C:\MongoDB\data\db
4. port 27017 浏览器输入 http://localhost:27017/ 成功打开
5. 新建cmd 输入 mongo 进入mongoDB Shell
第三步:创建 MongoDB 服务 (必须管理器权限)
1. 切换到 Mongodb 的 data 下,新建一个log 文件夹 ,存储登录日志
2. 切换到 data 下的 log ,新建 一个文件 mongo.log 存储登录日志
3. 切换到 C:\MongoDB 新建 mongo.config 配置文件,文件内写入:
dbpath=C:\MongoDB\data\db
logpath=C:\MongoDB\data\log\mongo.log
4. 新建cmd 输入 mongod --config C:\MongoDB\mongo.config (启动mongodb) 测试
5. 创建 mongodb 服务 mongod --config C:\MongoDB\mongo.config --install --serviceName "MongoDB" (必须管理员 关闭第四步 )
6. 启动 mongodb 服务 net start MongoDB
net stop MongoDB 停止mongdb服务
SC delete MongoDB 删除MongoDB 服务
查看 services.msc
常用命令
一、常用指令
mongo 进入mongodb Shell
show dbs 显示所有的数据库
db 查看当前数据库
use kuname 创建或者切换数据库
show tables 查看表
show collections 查看表
db.stats()显示当前DB状态
db.version()查看当前DB版本
db.getMongo()查看当前DB的链接机器地址
db.dropDatabase()删除数据库
二、MongoDB 增删改查
(一)插入
tablename相当于mysql中的table表名,MongoDB中的collection集合
db.tablename.insert()
db.tablename.insert({username:"张三"}) 添加一条数据
db.tablename.insert([{username:"张三"},{username:"李四"}]) 以数组的形式添加多条数据
db.tablename.insertOne() obj 只能插入一条数据
db.tablename.insertMany() array 只能接受数组
db.tablename.save() 类似 insert
(二)修改 update
db.tablename.update(query,object); query:update的查询条件,类似sql update查询内where后面的。
db.tablename.update({username:"wh1803"},{$set:{增加的内容}})
db.tablename.update({username:"张三"},{$set:{password:"abc123"}} 在username为张三的文档后面增添一个passsword为abc123
db.tablename.update({username:"张三"},{$set:{username:"李四"}} 将username为张三的数据修改为username为李四
dbtablename.update({},{$set:{password:"abc123"}}) 默认修改第一条数据
db.tablename.update({username:"cd1706"},{$set:{password:"abc123"}},true);
能不能查询到 (查不到)
true 查不到就直接插入
false 查不到就不插入 默认为false
修改多条数据
db.tablename.update({},{$set:{password:"abcd12456"}},true,true);
true 表示修改满足条件的所有数据 updateMany
false 表示修改满足条件的第一条数据 updateOne 默认false
db.tablename.updateOne({},{$set:{age:28}});
db.tablename.updateMany({},{$inc:{age:12}}); $inc对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作。这里表示给符合条件的数据的age加12。
(三)删除 deleteOne
db.tablename.deleteOne({username:"张三"}) 删除一条username为张三的数据
db.tablename.deleteMany() 删除多条数据
db.tablename.remove(query) 删除所有满足条件 的 文档
db.tablename.remove(query,n); 表示删除的数据量 n 只能删除一条数据 第一条数据
db.tablename.drop(); 删除当前集合 collection(mysql中所谓的表)
(四)查询 find
db.tablename.find() 查询所有相当于mysql中的 select * from tablename;
db.tablename.find({query},{field}) query为查询条件
db.tablename.find({username:"张三"}) 查询username为张三的文档
db.tablename.find({username:"张三"},{username:1,_id:0,password:1}) username为张三的文档,其中的username显示,默认id不显示,password显示
1 代表显示 0代表不显示
db.tablename.find({},{username:1}) 查询所有数据,只显示其中的username
去重查询
db.user.distinct("password")
$gt >
$gte >=
$lt <
$lte <=
db.tablename.find({age:{$gt:25}}) 选出age大于25的所有文档
db.tablename.find({age:{$gt:20,$lte:30}}) 选出age大于20且小于等于30的所有文档
db.user.find({$or:[{username:"张三"},{age:{$lte:40}}]},{_id:0}) 将user集合中username为张三,或者age小于等于40的文档,默认id不显示,其余的显示出来
相当于mysql中的select username ,password,age from user where username = "张三" or age <=40;
模糊查询
相当于mysql中的like select * from tablename where username like ‘hua%‘;
db.tablename.find({username:/^hua/});
db.tablename.find({username:/^hua$/});
db.tablename.find({username:/hua4$/});
利用正则
var txt = search
new RegExp("+txt+"$")
new RegExp("hua4$");
db.tablename.find({username:new RegExp("^hua")});
排序 .sort()
db.movie.find({},{year:1,title:1,_id:0}).sort({year:1}) 1 表示升序
db.movie.find({},{year:1,title:1,_id:0}).sort({year:-1}) -1 降序
db.movie.find({},{year:1,title:1,_id:0,"rating.average":1}).sort({year:-1,"rating.average":-1})
db.movie.find({},{year:1,title:1,_id:0,"rating.average":1}).sort({year:-1,"rating.average":1})
限制条数 limit
db.movie.find({},{year:1,title:1,_id:0}).limit(10);
跳过 skip
db.movie.find({},{year:1,title:1,_id:0}).skip(5);
db.movie.find({},{year:1,title:1,_id:0}).skip(5).limit(10);
db.movie.find({},{year:1,title:1,_id:0}).limit(10).skip(5);
长度 条数 count 所有集合数据 size 满足条件的集合数据
db.movie.find({},{year:1,title:1,_id:0}).size();
db.movie.find({},{year:1,title:1,_id:0}).count()
db.movie.find({},{year:1,title:1,_id:0}).skip(5).size();
db.movie.find().skip(5).count()
最大值
db.movie.find({},{year:1,title:1,_id:0}).max({"rating.average"})
db.movie.find({},{year:1,title:1,_id:0}).min({"rating.average"})
and 查询
db.movie.find({year:"1994","rating.average":9.6},{year:1,title:1,_id:0})
查询第一条数据
db.movie.findOne({},{year:1,title:1})
db.movie.find().limit(1);
判断 列 field 是否存在
db.movie.find({year:{$exists:true}},{year:1,title:1,_id:0})
db.movie.find({year11:{$exists:true}},{year:1,title:1,_id:0})
$in 包含
db.movie.find({genres:{$in:["犯罪"]}},{year:1,title:1,genres:1,_id:0})
$nin 不包含
db.movie.find({genres:{$nin:["剧情"]}},{year:1,title:1,genres:1,_id:0})