• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

整合MongoDB

武飞扬头像
雨会停rain
帮助1

1.MongoDB简介

MongoDB是一个高效的非关系型数据库(不支持表关系,只能操作单表)

MongoDB是一个基于分布式文件存储的数据库。由C 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

官网:https://www.mongodb.com学新通https://www.mongodb.com

2.MongoDB的特点

MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。具体特点总结如下: 

1. 面向集合存储,易于存储对象类型的数据 
2. 模式自由 
3. 支持动态查询 
4. 支持完全索引,包含内部对象 
5. 支持复制和故障恢复 
6. 使用高效的二进制数据存储,包括大型对象(如视频等) 
7. 自动处理碎片,以支持云计算层次的扩展性 
8. 支持 Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C 语言的驱动程 序, 社区中也提供了对Erlang及.NET 等平台的驱动程序 
9. 文件存储格式为 BSON(一种 JSON 的扩展)

3.区别

 MYSQL : 用于存储安全性要求比较高的数据

 REDIS : 存储数据格式简单 , 并且查询非常多的数据(用户缓存)

 MONGDB : 用户存储海量数据, 并且数据的安全性要求不高

4.安装教程

详细安装教程如下

Docker 安装 MongoDB | 菜鸟教程Docker 安装 MongoDB MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。 1、查看可用的 MongoDB 版本 访问 MongoDB 镜像库地址: https://hub.docker.com/_/mongo?tab=tags&page=1。 可以通过 Sort by 查看其他版本的 MongoDB,默认是最新版本 mongo:latest。 你也可以在下拉列表中找到其他你想要的版..学新通https://www.runoob.com/docker/docker-install-mongodb.html

5.MongoDB的体系结构

MongoDB 的逻辑结构是一种层次结构。主要由: 文档(document) 集合(collection) 数据库(database)这三部分组成的。逻辑结构是面 向用户的,用户使用 MongoDB 开发应用程序使用的就是逻辑结构。 

1. MongoDB 的文档(document),相当于关系数据库中的一行记录。 
2. 多个文档组成一个集合(collection),相当于关系数据库的表。 
3. 多个集合(collection),逻辑上组织在一起,就是数据库(database)。 
4. 一个 MongoDB 实例支持多个数据库(database)。 文档(document) 集合(collection) 数据库(database)的层次结构如下图:
 

mongodb层次结构
SQL术语/概念 MongoDB术语/概念  解释/说明  
database      database          数据库   
 table     collection       数据库表/集合
row           document           表中的一条数据  
column        field             数据字段/域   
index index 索引
table joins   表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键 

- null:用于表示空值或者不存在的字段,{“x”:null} 
- 布尔型:布尔类型有两个值true和false,{“x”:true} 
- 数值:shell默认使用64为浮点型数值。{“x”:3.14}或{“x”:3}。对于整型值,可以使用 NumberInt(4字节符号整数)或NumberLong(8字节符号整数), {“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)} 
- 字符串:UTF-8字符串都可以表示为字符串类型的数据,{“x”:“呵呵”} 
- 日期:日期被存储为自新纪元依赖经过的毫秒数,不存储时区,{“x”:new Date()}
- 正则表达式:查询时,使用正则表达式作为限定条件,语法与JavaScript的正则表达式相 同,{“x”:/[abc]/} 
- 数组:数据列表或数据集可以表示为数组,{“x”: [“a“,“b”,”c”]} 
- 内嵌文档:文档可以嵌套其他文档,被嵌套的文档作为值来处理,{“x”:{“y”:3 }} 
- 对象Id:对象id是一个12字节的字符串,是文档的唯一标识,{“x”: objectId() } 
- 二进制数据:二进制数据是一个任意字节的字符串。它不能直接在shell中使用。如果要 将非utf-字符保存到数据库中,二进制数据是唯一的方式。

6.导入依赖

    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>

7.编写yml文件

spring:
  data:
    mongodb:
      #uri: mongo://127.0.0.1:27017
      host: 127.0.0.1
      port: 27017
      database: 数据库
      # 指定用户名和密码
      authentication-database: admin   # 认证数据库
      username: root  # 用户名
      password: root  # 密码 


spring:
  data:
    mongodb:
      uri: mongo://192.168.136.160:27017/testdb

8.编写启动类

@EnableSwagger2
@ComponentScan(basePackages = "com")
@EnableDiscoveryClient
@SpringBootApplication
public class TanhuaDubboMongoApplication {

    public static void main(String[] args) {
        SpringApplication.run(TanhuaDubboMongoApplication.class, args);
    }

}

9.编写实体类

@Data
@Document(value="tb_person")
@ApiModel(value = "tb_person", description = "用户")
public class Person {

    @Id
    @ApiModelProperty(value = "用户id")
    private ObjectId id;

    @Field("myname")
    @ApiModelProperty(value = "用户名")
    private String name;

    @ApiModelProperty(value = "年纪")
    private int age;

    @ApiModelProperty(value = "地址")
    private String address;
}
学新通

 10.编写方法

/**
 * @author wangli
 * @data 2022/3/24 13:56
 * @Description:
 */
@Service
public class RecommendUserServiceImpl extends ServiceImpl<RecommendUserMapper, RecommendUser> implements RecommendUserService {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Autowired
    UserInfoFeign userInfoFeign;
    @Override
    public RecommendUser getTodayTheWind() {
        Long userId = UserHolder.getUserId();
        Criteria criteria = Criteria.where("toUserId").is(userId);
        Query query = new Query(criteria).with(Sort.by(Sort.Order.desc("score"))).limit(1);

        return mongoTemplate.findOne(query,RecommendUser.class);
    }
    public TodayBest todayBest(HttpServletRequest request) {
        //1 获取用户id
        Long userId = UserHolder.getUserId();
        //2 调用API查询
        RecommendUser recommendUser = getTodayTheWind();
        if (recommendUser == null) {
            recommendUser = new RecommendUser();
            recommendUser.setUserId(1l);
            recommendUser.setScore(99d);
        }

        //3 将RecommendUser转化为TodayBest对象
        String token = request.getHeader("Authorization");
        StandardResult standardResult = userInfoFeign.queryUserInfo(recommendUser.getUserId(), token);
        userInfoFeign.queryUserInfo(recommendUser.getUserId(), token);
        TodayBest vo = TodayBest.init((UserInfo) standardResult.getData(), recommendUser);
        //4 返回
        return vo;
    }
}
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcgkae
系列文章
更多 icon
同类精品
更多 icon
继续加载