mongodb数据库入门以及Springboot整合mongoDB数据库

1 mongodb基本操作

选择好安装路径之后一路next,等待安装完成,打开安装目录下的bin文件夹,运行mongo.exe可以运行进入monge的shell命令行界面,如下
在这里插入图片描述

monge常用操作指令

  • 1 创建数据表库
    Use 数据库名称

  • 2 检查当前使用的数据库
    db

  • 3 show dbs 展示数据库列表
    注意,空的数据库不会显示出来,必须至少插入一个文档。

  • 4 删除数据库
    先显示可用数据库 show dbs
    Use + 数据库名 使用数据库
    Db.dropDatabase() 删除数据库

  • 5 创建集合 db.createCollection(name,option)
    Name 是String类型 这个集合的名称
    Option Document类型 Document中可以指定的字段有
    capped (Boolean) 是否封闭的集合,如果为true 还需要指定 size 当达到size大小,型数据将会替换最旧的数据
    autoIndexId Boolean 类型,如果为true 将在_id上自动创建索引
    size 数字 指定集合的大小上限。
    Max 数字 指定集合中最大的文档数

注意 插入文档时,会先指定上限集合的capped字段的大小,然后检查max字段
Eg :
db.createCollection(“collection1”)
db.createCollection(“mycollection3”,{capped:true,autoIndexId:true,size:6142800,max:200})

  • 6 查看集合 show collections

  • 7 删除集合 db.集合名称.drop()

  • 8 集合中插入document
    db.集合名.insert(
    { _id: 1,
    Name:”xxx”,…….
    })

注意 如果插入的Doceument中指定了 id字段 将会按照该字段作为id,,如果没有该字段,那么mongodb将自动生成一个Objectid 作为_id .mongo中的 开头的都有特殊含义。

  • 9 查询文档 db.collection名称.find() // 查询当前collection的所有文档 ,如果用findOne() 的话只返回一个Document
  • 10 条件查询
    Db.mycollection.find({_id=2}).pretty()
    查询id=2的记录
    在这里插入图片描述
  • 11 AND
    在这里插入图片描述
  • 12 OR
    在这里插入图片描述
  • 13 嵌套查询 一个document里面嵌套别的document
    这也是mongodb的与关系型数据库最大的区别之一,若有如下数据
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" }, 
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" } 

查询的条件涉及到里面的document时可以这么写,
查找集合里面的size的h小于15,size的uom=in state=D 。 若是在关系型数据库里面就要用到多表查询,monge 在这种关联关系复杂的数据处理上是十分简单的。

Db.集合名称.find( { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" } )
  • 14 update 更新
    db.集合名称.update(原先数据字段,新的数据字段)mongodb默认只会修改一个地方,,要全部修改需要设置mult为true
db.mycollection.update({name:”xixixi”},{$set:{name:”xixixiupdate”}})

db.mycollection.update({name:”xixixi”},{$set:{name:”xixixiupdate”}},{mult:true})  
  • 15 remove 删除
    db.集合名称.remove({条件},删除多少条),
    如果remove() 不写参数相当于mysql的truncate

  • 16 skip 跳过 limit 限制
    limit用来限制查询的条数,skip用来设置跳过的条数。

  • 17 sort排序
    db.mycollection.find().sort({字段名:?})
    ? 设置为1 升序 设置为-1是降序。

  • 18 索引
    db.集合名.ensuleIndex({字段名:1,字段名:-1})
    索引 设置为1 则默认升序,设置为-1 默认降序

两个概念
  • 分片: 相当于将数据存储在多个服务器上,追求的是高性能,
  • 副本集 : 将数据在别的服务器上备份,当出现单点故障的时候可以自动切换到别的服务器,追求的是高度可靠,稳定。

2 Springboot整合mongodb

1 添加依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>2.1.4.RELEASE</version>
        </dependency>
2 配置文件
spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017
      database: db1
3 新建实体类

注意

  • @Document注解指明的是,对应数据库中的collection名称。

  • 如果不写该注解 默认当前类名首字母小写的相同名字的collection,还是加上好一些一目了然。

  • 如果想用实体类中的字段做主键,在字段名称上添加@Id注解即可。

  • 如果实体类中的字段名字为id,无论加不加@Id注解,都会默认id为主键

@Document(collection = "collection1")
public class MongoDbTest{

//    @Id
    private String testId;
    
    private String name;

    private String info;

    public String getTestId() {
        return testId;
    }

    public void setTestId(String testId) {
        this.testId = testId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }
}

4 DAO层

@Component
public class MongoDbTestDAO {

@Autowired
MongoTemplate mongoTemplate;


public MongoDbTest findByName(String name) {

    Query query = new Query(Criteria.where("name").is(name));

    return mongoTemplate.findOne(query, MongoDbTest.class);
}

public void insert(MongoDbTest test) {
    mongoTemplate.save(test);
}

//    update 需要三个东西  query  update   <T> class
public void updateByname(MongoDbTest test) {
    Query query = new Query(Criteria.where("name").is(test.getName()));
    Update update = new Update().set("info", test.getInfo());
    mongoTemplate.updateFirst(query, update, MongoDbTest.class);
}

public void delete(String name) {
    Query query = new Query(Criteria.where("name").is(name));
    mongoTemplate.remove(query);
}

}

然后Service层就调用这几个就可以了,,当然在controller也可以调用。。controller 和Service和 普通的Mysql的调用方式没有区别就不赘述了。

总结

mongodb的数据库里面存储的都是文本类型的数据是BSON格式(二进制存储),和JSON格式数据相似,如下图
在这里插入图片描述- 增删改查,在MongoTemplate中都有相应的模板,根据模板来使用即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值