(二)Mongdb的环境部署,以及用户创建,以及基础命令
(一)下载安装mongo
1下载
https://www.mongodb.com/try/download
-------- mongdb的全部安装步骤
2:安装的时候在Service Configuration的页面(data,log安装到自己想要得路径下面)
Data Directory:E:\mongodb\data\db
Log Directory:E:\mongodb\data\log\
3:在环境变量,系统变量的path里面新建(bin得路径): E:\mongodb\bin\
(二)修改mongo端口
1:修改 E:\mongodb\bin\mongod.cfg里面的port:从27017改为27020
2:停止mongdb服务,然后sc delete MongoDB 删除原服务,执行:mongod --config E:\mongodb\bin\mongod.cfg
3:重新安装服务:
mongod --logpath "E:\mongodb\data\log\mongod.log" --logappend --dbpath "E:\mongodb\data\db" --port 27020 --serviceName "MongoDB" --serviceDisplayName "MongoDB Server (MongoDB)" --install
4:启动服务
7:cmd: mongo localhost:27020 ,开始写命令
(三)创建两个管理权限得用户然后在启用权限认证
1:切换到admin创建两个管理用户:
db.createUser({ user: "useramin", pwd: "123456", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] }) 登陆命令:db.auth('useramin','123456')
db.createUser({ user: "alladmin", pwd: "123456", roles: [{ role: "root", db: "admin" }] }) db.auth('alladmin','123456') 登陆命令:db.auth('alladmin','123456')
3:启用权限认证:E:\mongodb\bin\mongod.cfg里面得#security:下添加节点:
security:
authorization: "enabled"
4:停止mongdb服务,然后sc delete MongoDB 删除原服务,执行:mongod --config E:\mongodb\bin\mongod.cfg
5:重新安装服务(--auth代表启用权限认证):
mongod --logpath "E:\mongodb\data\log\mongod.log" --logappend --dbpath "E:\mongodb\data\db" --port 27020 --auth --serviceName "MongoDB" --serviceDisplayName "MongoDB Server (MongoDB)" --install
6:启动服务
4:在在admin数据库登陆alladmin用户:db.auth('alladmin','123456'),在创建useradminuser用户:
db.createUser({ user: "useradminuser", pwd: "123456", roles: [{ role: "userAdmin", db: "test" }] })
5:在在admin登陆useradminuser用户:db.auth('useradminuser','123456')
6:useradminuser登陆完成后直接use test(直接切换到test,不用在在test数据库里面登陆)
7:useradminuser在test数据库里面创建两个用户:
dbowneruser:db.createUser({ user: "dbowneruser", pwd: "123456", roles: [{ role: "dbOwner", db: "test" }] })
dbowneruser:db.createUser({ user: "dbAdminuser1", pwd: "123456", roles: [{ role: "dbAdmin", db: "test" }] })
9:然后dbowneruser,dbAdminuser1就可以登陆test数据库了
db.auth('dbowneruser','123456')
db.auth('dbAdminuser1','123456')
10:角色权限
dbowneruser完全操控当前数据库,可以创建用户和删除用户
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问,不能创建用户也不能删除用户
11:删除用户 db.dropUser('dbAdminuser1')
12:查看用户: show users;
13:超级管理员操作用户:
db.system.users.remove({}) (删除所有用户)
db.system.users.remove({user:"dbuser"}) (删除指定用户)
db.system.users.find() (查找所有用户)
mongdb基础命令
1:运行mongo
mongo或者mongo localhost:27019
2:显示当前数据库名称
db
3:显示当前服务器下面的(非空的数据库)列表
show dbs
4:如果test数据库不存在,创建test数据库
如果test数据库已存在,切换到test数据库
use test
5:创建空集合
db.createCollection('products')
6:向集合添加数据,如果products不存在,则先创建products集合在添加数据,存在则直接添加数据
db.products.insert([{name:'lishi',no:'1122'},{name:'zhangsan',no:'3344'}]) 插入多条数据
db.products.insert({name:"wangliu",no:"7798"}) 插入一条数据
7:查找添加的数据集合
db.products.find()
8:显示所有的集合
show collections
9:根据名称查找(下面两种是一样的效果)
db.products.find({name:"wangwu"})
db.products.find({name:{$eq:"wangliu"}})
10:age大于2
db.products.find({age:{$gt:2}})
11:age大于或者等于2
db.products.find({age:{$gte:2}})
12:age小于2的
db.products.find({age:{$lt:2}})
13:age小于等于2的
db.products.find({age:{$lte:2}})
14:年龄不等于2的
db.products.find({age:{$ne:2}})
15:年龄在1,2,3里面的(in)
db.products.find({age:{$in:[1,2,3]}})
16:年龄不等于1,3的(notin)
db.products.find({age:{$nin:[1,3]}})
17:name以zhang开头的
db.products.find({name:/^zhang/})
18:根据name模块匹配
db.products.find({name:/sa/})
19:查询name等于zhangsan并且age等于1的数据
db.products.find({name:"zhangsan",age:1})
20查询name等于zhangsan或者age<3的(or)
db.products.find({$or:[{name:"zhangsan"},{age:{$lt:3}}]})
21:name等于zhangsan并且age小于2(and)
db.products.find({$and:[{name:"zhangsan"},{age:{$lt:2}}]})
22查询products集合中包含域名程为age的数据
db.products.find({age:{$exists: true}})
23:比2小相反的所有数据,包含没有age属性的数据也要查出来
db.products.find({age:{$not:{$lt:2}}})
24:查询age属性值是字符串的数据(1:Double,2:String,9:Date)
db.products.find({age:{$type:2}})
25:插入日期
db.products.insert({name:"wsss",age:new Date("2021-09-09")})
<<
即可执行任务javascript作为查询的一部分
26查询name包含zhangsan的数据
db.products.find({$where:function(){return this.name.indexOf('zhangsan')>-1}})
27查询name等于zhangsan的数据
db.products.find({$where:function(){return this.name=='zhangsan'}})
29:name等于zhangsan或者name等于lishi,只输出name,age,不输出_id,_id前面的要是不输出就直接不写
db.products.find({$where:"this.name=='zhangsan' || this.name=='lishi'"},{name:1,age:1,_id:0})
>>
30:查询age<2的,查询列只输出age,不输出其他列
db.products.find({age:{$lt:2}},{age:1,_id:0})
31:upsert true如果没有符合条件的插入一条,false不会插入,默认false
multi true一次可以跟新多条数据,false一次只能跟新一条数据,默认为false
db.products.update({name:"zhangsan1"},{$set:{age:2000,no:"uuu"}},{upsert:false,multi:true})
32:删除集合
db.products.drop()
33:删除name是wsss的数据
db.products.remove({name:"wsss"})
34:清空products集合
db.products.remove({})
35:查询name是zhangsan的并且age是1的
db.products.count({$and:[{name:"zhangsan"},{age:1}]})
36:返回不重复的name属性值的数组
db.products.distinct('name')
37:sort(1:正序,-1倒序);跳过前两条,查询后3条的数据
db.products.find().sort({age:-1}).skip(2).limit(3)
38:存在age的按age排倒叙,跳过前0条,取后面4条
db.products.find({age:{$exists:true}}).sort({age:-1}).skip(0).limit(4)
39:删除当前数据库
db.dropDatabase()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫