欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mongodb三分鐘入門大全

 更新時間:2022年01月24日 15:03:33   作者:哪?吒  
MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的,接下來通過本文給大家介紹mongodb三分鐘入門大全,感興趣的朋友一起看看吧

一、MongoDB是什么

1、維基百科

MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。

2、簡而言之

MongoDB是文檔型的NoSQL數(shù)據(jù)庫,數(shù)據(jù)以文檔(對應(yīng)關(guān)系型數(shù)據(jù)庫的記錄)的形式在MongoDB中保存,文檔實際上就是一個個JSON字符串,使用JSON的好處是非常直觀,通過一系列的Key-Value鍵值對來表示數(shù)據(jù),符合我們的閱讀習(xí)慣。
在Java、Python中對JSON都有很好的支持,數(shù)據(jù)從MongoDB中讀取出來后,可無需轉(zhuǎn)換直接使用;支持豐富的數(shù)據(jù)結(jié)構(gòu),Value可以是普通的整型、字符串、數(shù)組、嵌套的子文檔,使用嵌套的好處是在MongoDB中僅需一次簡單的查詢就能夠獲取到你所需的數(shù)據(jù)。

二、MongoDB 的應(yīng)用場景

1、MongoDB事務(wù)

MongoDB目前只支持單文檔事務(wù),MongoDB暫時不適合需要復(fù)雜事務(wù)的場景。
靈活的文檔模型JSON格式存儲最接近真實對象模型,對開發(fā)者友好,方便快速開發(fā)迭代,可用復(fù)制集滿足數(shù)據(jù)高可靠、高可用的需求,運維較為簡單、故障自動切換可擴展分片集群海量數(shù)據(jù)存儲。

2、多引擎支持各種強大的索引需求

  • 支持地理位置索引
  • 可用于構(gòu)建各種O2O應(yīng)用
  • 文本索引解決搜索的需求
  • TTL索引解決歷史數(shù)據(jù)過期的需求
  • Gridfs解決文件存儲的需求
  • aggregation & mapreduce解決數(shù)據(jù)分析場景需求,可以自己寫查詢語句或腳本,將請求分發(fā)到 MongoDB 上完成。

3、具體的應(yīng)用場景

傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在解決三高問題上的力不從心。
何為三高?

  • High performance - 對數(shù)據(jù)庫高并發(fā)讀寫的需求。
  • Huge Storage - 對海量數(shù)據(jù)的高效率存儲和訪問的需求。
  • High Scalability && High Availability- 對數(shù)據(jù)庫的高可擴展性和高可用性的需求。
  • MongoDB可以完美解決三高問題。

4、以下是幾個實際的應(yīng)用案例:

(1)游戲場景
使用MongoDB存儲游戲用戶信息、裝備、積分等,直接以內(nèi)嵌文檔的形式存儲,方便查詢、更新。
(2)物流場景
使用MongoDB存儲訂單信息、訂單狀態(tài)、物流信息,訂單狀態(tài)在運送過程中飛速迭代、以MongoDB內(nèi)嵌數(shù)組的形式來存儲,一次查詢就能將訂單所有的變更查出來,牛逼plus。
(3)社交場景
使用MongoDB存儲用戶信息,朋友圈信息,通過地理位置索引實現(xiàn)附近的人、定位功能。
(4)物聯(lián)網(wǎng)場景
使用MongoDB存儲設(shè)備信息、設(shè)備匯報的日志信息、并對這些信息進行多維度分析。
(5)視頻直播
使用MongoDB存儲用戶信息、點贊互動信息。

5、選擇MongoDB的場景總結(jié):

  • 數(shù)據(jù)量大
  • 讀寫操作頻繁
  • 數(shù)據(jù)價值較低,對事務(wù)要求不高

三、MongoDB對比MySQL

1、關(guān)鍵字對比

MySQLMongoDB解釋說明
databasedatabase數(shù)據(jù)庫
tablecollection表/集合
rowdocument行/文檔
columnfield字段/域
indexindex索引
join嵌入文檔表關(guān)聯(lián)/MongoDB不支持join,MongoDB通過嵌入式文檔來替代多表連接
primary keyprimary key主鍵/MongoDB自動將_id字段設(shè)置為主鍵

四、SpringBoot整合MongoDB實現(xiàn)增刪改查

1、引入pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>MongoDBProject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath/>
    </parent>
    <dependencies>
        <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>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
    </dependencies>
</project>

2、啟動類Application

package com.guor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

3、實體類

package com.guor;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}package com.guor.bean;
import org.springframework.data.annotation.Id;
import java.io.Serializable;
public class User implements Serializable {
    @Id
    private String id;//主鍵
    //該屬性對應(yīng)mongodb的字段的名字,如果一致,則無需該注解
    private String name;
    private Integer age;
    private String phone;
    private String parentid;//上級ID
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getParentid() {
        return parentid;
    }
    public void setParentid(String parentid) {
        this.parentid = parentid;
    }
    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", phone='" + phone + '\'' +
                ", parentid='" + parentid + '\'' +
                '}';
    }
}

4、UserRepository

package com.guor.dao;
import com.guor.bean.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface UserRepository extends MongoRepository<User,String> {
    Page<User> getPageByid(String parentId, Pageable pageable);
}

5、業(yè)務(wù)層service

package com.guor.service;
import com.guor.bean.User;
import com.guor.dao.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    public void insertUser(User user){
        userRepository.save(user);
    }
    public void updateUser(User user){
        userRepository.save(user);
    }
    public void deleteUserById(String id){
        userRepository.deleteById(id);
    }
    public List<User> getAllUser(){
        return userRepository.findAll();
    }
    /**
     * 根據(jù)id查詢評論
     */
    public User getUserById(String id){
        return userRepository.findById(id).get();
    }
	/**
	* 分頁
	*/
    public Page<User> getPageByid(String parentId, int page , int size){
        return userRepository.getPageByid(parentId, PageRequest.of(page-1,size));
    }
}

6、測試類

package com.guor;
import com.guor.bean.User;
import com.guor.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class MongoDBTest {
    @Autowired
    private UserService userService;
    @Test
    public void saveUser(){
        User user=new User();
        user.setName("比比東");
        user.setAge(22);
        user.setPhone("1314");
        userService.insertUser(user);
    }
    @Test
    public void getUser(){
        List<User> list = userService.getAllUser();
        for(User user : list){
            System.out.println(user);
        }
    }
    @Test
    public void updateUser(){
        User user=new User();
        user.setId("61e3d9ac57b3da05fd0fffed");
        user.setName("云韻");
        user.setAge(29);
        user.setPhone("18525351592");
        user.setParentid("1");
        userService.updateUser(user);
    }
    @Test
    public void getUserPage(){
        Page<User> pageResponse = userService.getPageByid("1",1, 2);
        System.out.println("----總記錄數(shù):"+pageResponse.getTotalElements());
        System.out.println("----當(dāng)前頁數(shù)據(jù):"+pageResponse.getContent());
    }
    
    @Test
    public void deleteUser(){
        String id = "61e3daf31faa1f5b0e6849f8";
        userService.deleteUserById(id);
    }
}

7、插入

在這里插入圖片描述

8、更新

在這里插入圖片描述

9、查詢

在這里插入圖片描述

到此這篇關(guān)于mongodb三分鐘入門大全的文章就介紹到這了,更多相關(guān)mongodb入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論