mongodb数据库
通过brew安装mongodb
只记录了mac的安装方式
brew tap mongodb/brew brew install mongodb-community
- 创建保存数据的文件夹:mkdir -p ~/data/db
- 设置权限:sudo chown
id -u
/data/db 注: ‘id -u‘表明 你当前登录的账户名 例如:sudo chownadmin
/data/db - 配置环境变量:PATH=/usr/local/Cellar/mongodb-community/4.2.0/bin:${PATH}}
- 重启配置文件:source ~/.bash_profile
mongodb 启动服务
// 启动 brew services start mongodb-community
// 关闭 brew services stop mongodb-community
启动MongoDB的shell
mongo || mongosh
mongodb 可视化工具
下载地址:https://www.mongodb.com/try/download/compass
mongodb常用命令
Show.dbs 查看所有的数据库
use demo(demo就是数据库的名称) 创建数据库,如果真的想把这个数据库创建成功,那么必须插入一个数据
下面命令表示给demo数据库的user表中插入数据
db.user.insert({"name":"zhangshan"})
db.user.insertMany({"name":"zhangshan"},{"name": "lisi"}) // 批量插入
show collections 查看当前数据库有哪些集合(表)// 查看之前先use到要查看的数据库
db.user.find() 查看当前user的所有数据
db.user.distinct(“name”) 查询去掉后的当前集合中的某列的重复的数据。 // 会过滤掉name中的相同数据
db.user.find({“age”:22}) 查找age等于22的数据
db.dropDatabase() 删除当前的数据库
db.user.drop() 删除指定的集合
1.查询数据
db.user.find({“age”:{$gt:22}}) 查询年龄>22的记录
db.user.find({“age”:{$lt:22}}) 查询年龄<22的记录
db.user.find({“age”:{$lte:22}}) 查询年龄<=22的记录
db.user.find({“age”:{$gte:22}}) 查询年龄>=22的记录
db.user.find({“age”:{ g t e : 22 , gte:22, gte:22,lte:26}}) 查询年龄>=22 && <=26的记录
db.user.find({“name”: /mongo/}) 查询name中包含mongo的数据 一般模糊查询用于搜索
db.user.find({“name”: /^mongo/}) 查询name中以mongo开头的
db.user.find({“name”: /mongo$/}) 查询name中以mongo结尾的
db.user.find({},{“name”:1}) 查询指定列 name的数据
db.user.find({},{“name”:1,“age”:1}) 查询指定列 name、age的数据
db.user.find({“age”:{$gt:22}},{“age”:1}) 查询age大于22的数据 (查询指定列)
db.user.find().sort({“age”:1}) 升序 按照年龄排序 1 升序 -1 降序
db.user.find().sort({“age”:1}) 降序 按照年龄排序 1 升序 -1 降序
db.user.find({“name”:“wangwu”,“age”:25}) 查询name=wangwu 年龄=25的记录
db.user.find().limit(5) 查询前5条数据
db.user.find().skip(10) 查询10条以后的数据
db.user.find().skip(5).limit(10) 查询5-10之间的数据 // 可用于分页,limit是pageSize,skip是(page-1)*pageSize
可以使用for循环快速添加数据
for(var i=1;i<100;i++){
... db.admin.insert({"username":"zhangsan"+i,"age":i})
... };
db.user.find().count() 统计数量,查看一共有多少条数据
db.user.find({$or:[{“name”:“wangwu”},{“name”:“haha”}]}) 查询name= wangwu 或者haha的数据
db.user.findOne() 查询第一条数据
db.user.find({“age”:{$gte:25}}).count() 查询某个结果集的记录条数统计数量
2.修改数据
$set: 用来指定一个键并更新键值,若键不存在并创建
db.user.update({“name”:“wangmazi”},{$set:{“name”:“王麻子”}}) 修改名字
db.user.update({“name”:“张三”},{$set:{“gender”: “男”}}) 给名字叫张三的增加一个性别
db.user.update({“age”:18},{$set: {“sex”:“女”}},{multi: true}) 批量更新数据
更新数据的时候如果不写$set,意思就是替换之前的数据
$inc:可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作
db.user.update({name:‘李四’},{$inc:{age:5}}) 给名字叫李四的人,在当前年龄的基础上增加四岁
$unset:用来删除键
db.user.update({name:‘李四’},{$unset:{age:1}}) 删除李四的年龄
$push–数组修饰器:向文档的某个数组类型的键添加一个数组元素,不过滤重复的数据。添加时键存在,要求键值类型必须是数组;键不存在,则创建数组类型的键
db.user.update({name:‘李四’}, {$push: {hobby: ‘喝酒’}}) 给李四加一个爱好
3.删除数据
db.user.remove({“name”:“hehe”}) 删除数据
db.admin.remove({“age”: {$gt: 30}}, {justOne:true}) 只删除一条数据
注意:删除数据的时候一定要加条件,不然就是删除所有的数据,只能删库跑路了
设置权限
启用权限前,需要先创建管理员用户
- Use admin
- 创建一个超级用户root
db.createUser(
{
user: "root",
pwd: "root",
roles: [ {role: "root", db: "admin"} ]
}
)
启用权限
在mongod.conf文件中配置 (我本机的路径 /usr/local/etc/mongod.conf)
security: authorization: enabled
完整的配置
systemLog: destination: file path: "logs/mongodb/mongod.log" logAppend: true storage: journal: enabled: true dbPath: "data/mongodb/db" net: port: 27017 security: authorization: enabled
我们先停止mongodb服务,因为我是使用命令方式启动,所以只需要
Ctrl + C
就可以关闭服务
命令行重新启动刚才配置的conf文件生效
mongod --config /usr/local/etc/mongod.conf (路径视本机而定)
- 权限验证
1. use admin 2. db.auth('账户名', '密码') 3. 返回结果 1 证明登录成功 (如果用mongosh, 返回结果是:{ok:1}) 4. show dbs 查看数据库
设置普通用户后续再记录
未完,待续~~~