mongodb-安装配置和使用(常用指令)以及增删改查
mongoDB 数据库
一. 安装 mongoDB
1. 官网地址:https://www.mongodb.com/
2. 选择 custome
3. 修改安装地址 C:\MongoDB
4. 修改环境变量 找到 bin 路径 C:\MongoDB\bin 配置到全局环境变量
二. 启动mongo
按照下列方法依此操作
1. 进入mongoDB 目录 ,新建 data ,保存数据
2. 进入 data, 在data内新建 db 文件夹 保存数据库数据
3. 执行 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
SC delete MongoDB 删除MongoDB 服务
查看 services.msc
四. mognodb
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。它的特点:高性能、易部署、易使用,存储数据非常方便。
SQL | mongodb |
---|---|
database | database/db |
table 表 | collection 集合 |
row 行 | document 文档 |
column 列 | field 域名 |
index | index |
table join | 不支持 |
primary key | _id |
1、collection 集合
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
2、 document 文档
文档是一个键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点
数据类型
string
integer
boolean
double
array
max min(key)
timestamp
object
null
symbol
常用指令
mongo 进入mongodb Shell
show dbs 显示所有的数据库
db 查看当前数据库
db.getName()
use cd1706 创建或者切换数据库
查看命令提示
help
db.help()
db.test.help()
db.test.find().help()
显示当前DB状态
db.stats()
查看当前DB版本
db.version()
查看当前DB的链接机器地址
db.getMongo()
删除数据库
db.dropDatabase()
db.getName() == db
db.getCollectionNames() == show collections
db.createCollection(“music”);
show collections 显示当前数据库内的集合
db.emp.save() 保存数据 如果第一次就是直接创建集合
db.userinfo.insert()
创建一个聚集集合
db.createCollection(“collName”, {size: 20, capped: true, max: 100});
db.collName.isCapped(); //判断集合是否为定容量
得到指定名称的聚集集合
db.getCollection(“account”);
得到当前db的所有聚集集合
db.getCollectionNames(); 返回是数组
显示当前db所有聚集的状态
db.printCollectionStats();
MongoDB 增删改查
查 find findOne
增 insert({},[]) insertOne insertMany save()
改 update updateOne updateMany
删除 deleteOne deleteMany remove
插入
db.userinfo.insert() db.userinfo.insert({username:"mingming"}) db.userinfo.insert([{username:"huahua"},{username:"pengzhan"}])
db.userinfo.insertOne() obj 只能插入一条数据
db.userinfo.insertMany() array 只能接受数组
db.userinfo.save() 类似 insert
修改 update
db.test.update(query,object);
db.user.update(
{
username:"wh1803"
},
{
$set:{
}
}
)
db.userinfo.update({username:"mingming"},{
$set:{
password:"abc123"
}
}
db.userinfo.update({password:"123"},{
$set:{
username:"zuozuomu"
}
})
db.user.update(
{password:"abc123"},
{$set:{
username:"dadazuo"
}}
)
修改第一条数据
db.userinfo.update({},{
$set:{
password:"abc123"
}
})
db.userinfo.update({username:"cd1706"},{
$set:{
password:"abc123"
}
},true);
能不能查询到 (查不到)
true 查不到就直接插入
false 查不到就不插入 默认为false
修改多条数据
db.userinfo.update({},{
$set:{
password:"abcd12456"
}
},true,true);
true 表示修改满足条件的所有数据 updateMany
false 表示修改满足条件的第一条数据 updateOne 默认false
db.userinfo.updateOne({
},{
$set:{
age:28
}
});
db.userinfo.updateMany({},{
$inc:{
age:12
}
});
删除 deleteOne
db.userinfo.deleteOne({
username:"zuozuomu"
}) 删除一条数据
db.userinfo.deleteMany() 删除多条数据
db.userinfo.remove(query) 删除所有满足条件 的 文档
db.userinfo.remove(query,n); 表示删除的数据量 n 只能删除一条数据 第一条数据
db.userinfo.drop(); 删除集合 collection
db.users.findAndModify({
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: \'a2\'}, $inc: {age: 2}},
remove: true
});
db.userinfo.findAndModify({
query:{username:"pengzhan"},
sort:{age:-1},
update:{
$set:{
tel:13812341234,
},
$inc:{
age:16
}
},
remove:false
})
查询 find
db.userinfo.find() 查询所有 select * from userinfo where password = "abc123";
db.userinfo.find({query},{field})
db.userinfo.find({username:"pengzhan"})
db.userinfo.find({username:"pengzhan"},{username:1,_id:0,password:1}); 1表示显示 0不显示
db.userinfo.find({age:24})
去重查询
db.user.distinct("password")
select distinct password from user;
范围查询
$gt great then > 大于
$gte great then equal >= 大于或等于
$lt less then < 小于
$lte less then equal <= 小于或等于
db.userinfo.find({
age:{$gt:25}
})
db.userinfo.find({
age:{$gt:20,$lte:30}
})
$set
$inc
$or or
db.user.find(
{
$or:[
{
username:"pengzhan"
},
{
age:{
$lte:40
}
}
]
},
{
_id:0
}
)
模糊查询 like
db.userinfo.find({username:/^hua/});
db.userinfo.find({username:/^hua$/});
db.userinfo.find({username:/hua4$/});
var txt = search
new RegExp("+txt+"$")
new RegExp("hua4$");
db.userinfo.find({username:new RegExp("^hua")}); //常用语句
db.movie.find({query},{field}) query 查询条件 field 查询的字段
db.movie.find({},{title:1,year:1})
select title ,year from movie;
db.movie.find({},{title:1,year:1,_id:0}) 1 显示 0 不显示
db.movie.find({},{title:1,_id:0,genres:1})
db.movie.find({},{title:1,_id:0,"rating.average":1})
db.movie.find({year:{$gt:"1994",$lt:"2017"}},{title:1,year:1,_id:0})
db.movie.find({year:"1994"},{title:1,year:1,_id:0,genres:1});
db.movie.find({"rating.average":{$gte:9.3}},{year:1,title:1,_id:0,\'rating.average\':1})
db.movie.find({"rating.average":{$gte:9.3},year:"1994"},{year:1,title:1,_id:0,\'rating.average\':1})
db.movie.find({},{year:1,title:1,"directors.name":1});
排序
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"})
db.movie.aggregate({$group:{"_id":"min",min_value:{$min:\'$year\'}}})
db.movie.aggregate({$group:{\'_id\':"max",max_value:{$max:\'$year\'}}})
db.movie.aggregate({$group:{"_id":"year",max_value:{$max:"$year"}}})
db.movie.aggregate({$group:{"_id":"year",min_value:{$min:"$year"}}})
db.movie.aggregate({$group:{_id:"rating.average",max_value:{$max:"$rating.average"}}})
db.movie.find({},{year:1,title:1,_id:1}).sort({year:-1}).limit(1)
or $or 查询
select * from userinfo where age = 22 or age =28;
select * from userinfo where age in (22,28);
db.movie.find({$or:[{year:"1994"},{year:"1997"}]},{year:1,title:1,_id:0})
and 查询
db.movie.find({year:"1994","rating.average":9.6},{year:1,title:1,_id:0})
判断 列 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})
#### in
select * from movie where genres in [ "犯罪"] / [50,90]
#### $nin 不包含
db.movie.find({genres:{$nin:["剧情"]}},{year:1,title:1,genres:1,_id:0})
in
$inc ++ update
db.movie.update({},{
$inc:{
year:"1"
}
})