Linux mongodb安装及终端命令

Linux mongodb 安装

下载地址
下载到windows

https://www.mongodb.com/download-center/community

切换到安装目录

cd /usr/local/
rz
选择需要上传的文件

创建数据库文件目录

mkdir -p /data/db/

解压压缩包

tar -zxvf 压缩包

重命名(可选)

mv 文件名 新文件名

切换到执行命令目录

cd 解压以后的mongodb路径/bin/

mongod:启动mongodb服务器
mongo:连接mongodb服务器

开启或者关闭防火墙

关闭防火墙命令:systemctl stop firewalld.service
开启防火墙:systemctl start firewalld.service
关闭开机自启动:systemctl disable firewalld.service
开启开机启动:systemctl enable firewalld.service

允许任意ip远程访问MongoDB

在MongoDB的bin目录下

>./mongod --bind_ip 0.0.0.0

服务端

./mongod

客户端

./mongo

客户端
查看数据库

show databases;
show dbs;

创建数据库

use test;

向test数据库中添加数据

>use test
>db.table.insert({_id:1,name:'zhangsan', age:18});

查询test数据库所有

>db.table.find()
>{"-id" : 1,"name":"zhangsan","age":18}

查询test中id为1 的

>db.table.find({-id:1});
>{"-id" : 1,"name":"zhangsan","age":18}

删除id为1的

>db.table.deleteOne({_id:1});
>批量删除
>db.table.deleteMany();

删除table表中所有的数据

>db.table.remove({});

修改table表中指定id的值

>db.table.update({id:1},{$set:{name:'赵柳'}})

springboot操作mongodb 5.0.9

直接操作命令

1.创建数据库
// 创建和切换数据库
>use testdb

// 查看由哪些数据库 
>show dbs;

// 删除数据库
>db.dropdatabase();

// 显示当前所在数据库
>db
    

2.创建集合,类似于表
// 查看集合
>show tables; | show collections;

//  创建集合, 或者直接插入数据,指定创建
>db.createCollection('users');

// 删除集合
>db.users.drop();

3.文档操作
// 插入
>db.users.insert({name:'zhangsan',age:23})
// 插入多条
>db.users.insert([{name:'zhangsan',age:23},{name:'李四',age:16}])
>db.users.insertMany([{name:'小红',age:23},{_id:1,name:'李四',age:18}]);

// 查看
>db.users.find();

// 删除所有
>db.users.remove({});
// 条件删除
>db.users.remove({_id:ObjectId("alsdfkjlajsdflasjdf")});

// 更新
// 将age=25修改为28
// $set保留原始数据的情况下更新
>db.users.update({age:25},{$set:{age:28}});
// multi:true 开启批量更新,默认false
// upsert:true 没有匹配的数据机插入,默认false
>db.users.update(
    {age:23}, // 查询条件,都写到第一个{}里面
    {$set:{age:25}}, // 修改的内容,都写到第二个{}里面
    {multi:true,upsert:true} // 是否开启批量更新,和插入更新操作
);

// 查询操作
>db.users.find(); // 表示查询所有
// db.users.find(
{}, // 查询条件
{} // 返回字段,不写表示返回所有
)
db.users.find().pretty(); pretty();对返回结果格式化,美化查询结果,方便观察    
>  
// 等值查询
>db.users.find({name:'张三'});
// 小于查询 $lt ,小于等于 $lte
// 大于$gt ,大于等于 $gte
// 不等于 $ne
> db.users.find({age:{$lt:23}});
// and查询
>db.users.find({age:{$lt:23},name:'张三'});
//  or
>  db.users.find({$or:[{条件1},{条件2}]});
// 模糊查询, 正则表达式实现近似模糊查询 以/开始 以/结束
>db.users.find({name://});
// $size 安照数组长度查询 
>db.users.find({arrname:{$size:3}})
// 查询某一条深数据的某个数组字段,有值是 ‘李四’的数据
>db.users.find({arrname:'李四'})    

聚合操作

// 排序 sort
>db.users.find().sort({age:1,name:1}) // age:1升序 age:-1降序
// 分页 skip(0) 从那条数据开始,limit(2),每页多少条
>db.users.find().sort({age:1,name:1}).skip(0).limit(2);
// 总条数 count()
>db.users.find().count();
// 去重 distinct()
>db.users..distinct('age')
// 指定返回字段, 1返回 0不返回
>db.users.find({条件},{name:1,age:1})
// $type 检索集合中匹配的数据类型,并返回结果
>db.users.find({title:{$type:'string'}})

索引

// 创建索引 name:1升序索引, name指定索引名称
>db.users.createIndex({name:1},{name:'name_index'})
// 查看所有
>db.users.getIndexes();
// 删除索引
>db.users.dropIndexes();
// 指定索引过期时间
>db.users.createIndex({age:1},{name:'name_index',expireAfterSeconds:15})
// 删除指定索引
>db.users.dropIndex('name_index');
// 统计索引大学
>db.users.totalIndexSize();
// 复合索引 
>db.users.createIndex();
>db.users.find({});

聚合查询

// sum:1 ,sum:2 聚合结果*2
>db.users.aggregate({$group:{_id:'$name','sum_name':{$sum:1}}})
// $avg,$max,$min,$push,$addToSet
>    

对象

@Document("users")
User{
    @Id // 标记id
    @Field(value = "userName") // 和mongodb中映射字段注解 
    @Transient // 不存到mongodb
}

// 插入
mongoTemplate.save(user); // save 方法在_id,存在时更新数据
mongoTemplate.insert(user); // _id存在会报 主键冲突, 批量处理友好,推荐使用
mongoTemplate.insert(users, User.class); // 批量插入
mongoTemplate.insert(users, "users"); // users collection集合的名称

// 查询所有
mongoTemplate.findAll(User.class);
mongoTemplate.findAll(User.class, "users"); // User.class 没有指定@Document("users")

mongoTemplate.find(Query.query(Criteria.where("name").is("张三")), User.class);

mongoTemplate.find(Query.query(Criteria.where("age").lte(25), User.class);

// and,gt,gte,in,is,lt,lte,nin不包括,

// 命令查询

使用 json 字符串方式查询
Query query = new BasicQuery("{name:'张三',age:23}");
mongoTemplate.find(query, User.class);

更新/删除

// 更新
Update update = new Update();
update.set("age", 24);
// 更新符合条件的第一条数据
mongoTemplate.updateFirst(Query.query(Critera.where("age").is(23)), update, User.class);
// 更新复合条件的多条数据
mongoTemplate.updateMulti(Query.query(Critera.where("age").is(23)), update, User.class);

// 条件删除
mongoTemplate.remove(Query.query(Critera.where("age").is(23)), User.class);
// 删除所有
mongoTemplate.remove(new Query(), User.class);

搭建副本集群

// --replSet 副本集 seducelecreplace 副本集名称/集群中其他节点的主机和端口

mongd --port 27017 --dbpath ../db/data1 --bind_ip 0.0.0.0 --replSet seducelecreplace/[localhost:27018,localhost:27019]

mongd --port 27018 --dbpath ../db/data2 --bind_ip 0.0.0.0 --replSet seducelecreplace/[localhost:27017,localhost:27019]

mongd --port 27019 --dbpath ../db/data2 --bind_ip 0.0.0.0 --replSet seducelecreplace/[localhost:27017,localhost:27018]

初始化副本集群

// ip 是服务器公共ip
>var config = {
	_id:"seducelecreplace",
	members:[
	{_id:0,host:"ip:27017"},
	{_id:1,host:"ip:27018"},
	{_id:2,host:"ip:27019"},
	]
}
# 初始化配置
>rs.initiate(config);

# 设置客户端临时可以访问
>rs.secondaryOk();
# 或者
>rs.slaveOk();

副本集:自动故障转移,主从复制,集群,解决问题:1.数据冗余备份 2.架构高可用

不能解决:1.单节点压力问题(硬件限制,并发访问压力)

分片集群

// 
>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值