mongodb基本操作
一.
1.集群部署
主从配置文件一致
systemLog: verbosity: 0 #日志路径配置 path: mongod.log logAppend: true destination: file net: port: 27017 #开启外网访问权限 bindIp: 0.0.0.0 processManagement: fork: true pidFilePath: /home/mongodb/pid/mongod.pid storage:db #数据存储路径 dbPath: /home/mongodb/data/db directoryPerDB: true wiredTiger: engineConfig: cacheSizeGB: 1 security: authorization: enabled keyFile: /home/mongodb/mongodb.key clusterAuthMode: keyFile replication: replSetName: rs0 oplogSizeMB: 5000主库创建用户
db.createUser({user:"admin", pwd:"admin", roles:[{role:"root",db:"admin"}]})登录用户
db.auth("admin","admin")初始化节点
rs.initiate({_id:"rs0", members:[{_id:0, host:"192.168.40.1:27017"},{_id:1, host:"192.168.40.2:27017"}]})新增节点
rs.add("ip:port");移除节点
rs.remove("ip:port");主库创建密钥key文件
openssl rand-base64666>/home/mongodb/mongodb.keychmod600/home/mongodb/mongodb.key之后把mongodb.key复制到从库,权限保持一致
查看配置
rs.config();查看状态
rs.status();PRIMARY:表示主节点
SECONDARY:表示从节点
部署好后,主库会自动把全量数据同步至从库
二.
1.查询
where 查询:
db.getCollection("xxxx").find({"id":NumberLong('11111111111')}).limit(10)查询表行数
db.getCollection("xxxx").count()查询某age和sex列,过滤条件,并且把sex列的列名改成性别:
db.getCollection("xxxx").aggregate([{"$match": {"sex":"男","category": {"$in":["数学","语文"]},'fieldName': {exists:true,$ne:null},'createTime': { $gte: ISODate('2022-07-01T00:00:00Z'),$lte: ISODate('2022-08-01T00:00:00Z')},} },{"$project": {"_id":0,"age":1,"性别":"$sex","生日":{$dateToString:{format:"%Y-%m-%d %H-%M-%S",date:"$birth"}},"number":"$number","时间":""}},//查询前10条{ $limit:10},//如果想分组,就写下面这个group,{"$group": {"_id":"$colname",//分组字段"number": { $avg:"$age"} } }]);2.新增
db.collection.insertOne({name:"Example Document"});3.修改
单个修改
批量修改
db.getCollection("table").update({"aaa":"0108"},{$set:{"bbb":"360"}},{multi:true});4.删除
5.创建视图
db.createView("view_name","collection_name",[{ $match: { abc:"2109245374"} },{ $project: { _id:1,abc:1,def:1} }])查看当前执行的任务
db.currentOp()三.
1.导出
mongodump -h dbhost -d dbname -o dbdirectory2.导入
mongorestore -h dbhost -d dbname --dir dbdirectory3.连接
mongosh --host localhost --port 27017 --username root --password 123456 --authenticationDatabase admin4.查询数据库
show dbs5.查询所有集合
show collections6.查询版本号
db.version()7.查看慢日志
db.getProfilingLevel() 查看慢日志是否开启,1,2是开启慢日志 db.setProfilingLevel(2, 100) // 开启详细记录,并设置慢查询阈值为100毫秒