Mongodb

本文介绍了MongoDB的基本概念、应用场景,包括游戏、物流、社交和物联网,详细讲解了如何下载与安装、数据的CRUD操作,以及在SpringBoot中的整合方法。最后提到开启MongoDB服务端和客户端的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mongodb

一、Mongodb简介

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

​ MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

​ 使用行业:

​ 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新

​ 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。

​ 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能

​ 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析

​ 视频直播,使用 MongoDB 存储用户信息、礼物信息等

二、下载与安装

下载地址

https://www.mongodb.com/try/download/enterprise

安装

​ 1、在D:\mongodb目录下创建data文件夹,并在data文件夹下面创建db文件夹用来存储数据

​ 2、在D:\mongodb\bin目录下执行cmd命令

启动服务端
mongod --dbpath=..\data\db
启动客户端
mongo --host=127.0.0.1 --port=27017

​ 3、安装navicat测试是否可以连接成功

三、数据操作CRUD

数据添加

db.book.save({"name":"springboot",type:"springboot"});

数据查询

db.book.find({type:"springboot"});

删除数据

db.book.remove({type:"springboot"});

更改数据

--每次更改第一条满足条件的数据
db.book.update({type:"springboot"},{$set:{type:"springboot3"}});
--更改多条数据
db.book.updateMany({type:"springboot"}, {$set:{type:"springboot3"}})

四、SpringBoot整合MongonDB

引入依赖

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

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

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

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

application.yml配置文件

spring:
  data:
    mongodb:
      uri: mongodb://localhost/mongodb
logging:
  level:
    org.springframework.data.mongodb.core: debug

Domain

package com.travel.domain;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.ArrayList;
import java.util.List;

/**
 * @author XYC
 * @version 1.0
 * @date 2023/11/5 10:53
 */
@Data
@Document("users")
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
    private List<String> hobbies = new ArrayList<String>();
}

Repository

package com.travel.repository;

import com.travel.domain.User;
import org.springframework.data.mongodb.repository.MongoRepository;

/**
 * @author XYC
 * @version 1.0
 * @date 2023/11/5 10:52
 */
public interface UserRepository extends MongoRepository<User, String> {
}

Service

package com.travel.service;

import com.travel.domain.User;

import java.util.List;

/**
 * @author XYC
 * @version 1.0
 * @date 2023/11/5 11:23
 */
public interface IUserService {

    List<User> list();

    User get(String id);

    void save(User user);

    void update(User user);

    void delete(String id);
}

ServiceImpl

package com.travel.service.impl;

import com.travel.domain.User;
import com.travel.repository.UserRepository;
import com.travel.service.IUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author XYC
 * @version 1.0
 * @date 2023/11/5 11:23
 */
@Service
@RequiredArgsConstructor
public class UserServiceImpl implements IUserService {

    private final UserRepository userRepository;

    @Override
    public List<User> list() {
        return userRepository.findAll();
    }

    @Override
    public User get(String id) {
        return userRepository.findById(id).orElse(null);
    }

    @Override
    public void save(User user) {
        userRepository.save(user);
    }

    @Override
    public void update(User user) {
        userRepository.save(user);
    }

    @Override
    public void delete(String id) {
        userRepository.deleteById(id);
    }
}

测试

package com.travel.service;

import com.travel.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Arrays;

/**
 * @author XYC
 * @version 1.0
 * @date 2023/11/5 11:28
 */
@SpringBootTest
public class MongoDemo {
    @Autowired
    private IUserService userService;

    @Test
    public void save() {
        User user = new User();
        user.setAge(17);
        user.setName("John3");
        user.setHobbies(Arrays.asList("Javascript", "C"));
        userService.save(user);
    }

    @Test
    public void update() {
        User user = new User();
        user.setId("65470fe4a57aa1595800f097");
        user.setAge(19);
        user.setName("John");
        userService.update(user);
    }

    @Test
    public void get() {
        System.out.println(userService.get("65470fe4a57aa1595800f097"));
    }

    @Test
    public void list() {
        System.out.println(userService.list());
    }

    @Test
    public void delete() {
        userService.delete("111");
    }
}
package com.travel.service;


import com.travel.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.util.List;

/**
 * @author XYC
 * @version 1.0
 * @date 2023/11/5 14:27
 */
@SpringBootTest
public class MongoTemplateTest {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Test
    public void testFind() {
        // 范围查询15-20年龄
        Criteria criteria = Criteria.where("age").gte(15).lte(20);
        Query query = new Query();
        query.addCriteria(criteria);
        List<User> users = mongoTemplate.find(query, User.class);
        System.out.println(users);
    }

    @Test
    public void pageTest() {
        Query query = new Query();
        // 用户分页查询
        long count = mongoTemplate.count(query, User.class);
        if (count < 0) {
            System.out.println("查询总数为:" + count);
            return;
        }
        query.skip(2).limit(3);
        List<User> users = mongoTemplate.find(query, User.class);
        System.out.println(users);
    }

    @Test
    public void rankTest() {
        // 排序
        Query query = new Query();
        query.with(Sort.by(Sort.Direction.DESC, "id"));
        List<User> users = mongoTemplate.find(query, User.class);
        System.out.println(users);
    }
}

五、注意

使用MongoDB时,必须打开服务端和客户端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值