MongoDB安装及开发系例全教程

一、系列文章目录

一、MongoDB安装教程—官方原版

二、MongoDB 使用教程(配置、管理、监控)_linux mongodb 监控

三、MongoDB 基于角色的访问控制

四、MongoDB用户管理 

五、MongoDB基础知识详解

六、MongoDB—Indexs 

七、MongoDB事务详解

 八、MongoDB分片教程

九、MongoDB 操作(CRUD) 教程 

十、MongoDB时间序列 

十一、Spring连接到MongoDB的几种方法 

十二、MongoDB可视化工具(免费)

十三、Spring MongoDB 开发教程(一) 

十四、Spring MongoDB 开发教程(二) 

十五、Spring Mongodb—MongoTemplate详解及示例代码 

十六、MongoTemplate —保存、更新和删除文档

十七、Spring Boot 实战 MongoDB 实现批量写入 

        MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常流行的 文档类型数据库 。

      在高负载的情况下,MongoDB 天然支持水平扩展和高可用,可以很方便地添加更多的节点/实例,以保证服务性能和可用性。在许多场景下,MongoDB 可以用于代替传统的关系型数据库或键/值存储方式,皆在为 Web 应用提供可扩展的高可用高性能数据存储解决方案
 

二、SpringBoot整合MongoDB

1、添加MongoDB依赖

Spring Data MongDB 是Spring Data的下的一个模块,在SpringBoot中整合MongoDB就需要添加Spring Data MongDB的依赖


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

2、配置文件


spring:data:mongodb:host: 192.168.136.160port:27017database:leousername:adminpassword:123456

3、实例代码

主要注解:

@Document,文档是 MongoDB 中最基本的数据单元,由键值对组成,类似于 JSON 格式,可以存储不同字段,字段的值可以包括其他文档,数组和文档数组。

@Id(主键):用来将成员变量的值映射为文档的_id的值

@Indexed(索引): 索引是一种特殊的数据结构,存储在一个易于遍历读取的数据集合中,能够对数据库文档中的数据进行排序。索引能极大提高文档查询效率,如果没有设置索引,MongoDB 会遍历集合中的整个文档,选取符合查询条件的文档记录。这种查询效率是非常低的。

@Field(字段): 文档中的字段,类似于 MySql 中的列。

@Aggregation(聚合): 聚合主要用于数据处理,例如统计平均值、求和等。


import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "Book")
public class Book {@Idprivate String id;private String title;private String author;private String summary;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getSummary() {return summary;}public void setSummary(String summary) {this.summary = summary;}
}

SpringBoot操作MongoDB有两种方式,分别是继承MongoRepository类和service注入MongoTemplate

MongoRepository方式:

Repository是用于操作数据库的类


package com.palmer.rachelle.javaspringmongodb.repository;
import com.palmer.rachelle.javaspringmongodb.model.Book;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;public interface BookRepository extends MongoRepository<Book, String> {List<Book> findByTitleStartsWithOrAuthor(String title, String author);
}

Controller代码:

import com.palmer.rachelle.javaspringmongodb.model.Book;
import com.palmer.rachelle.javaspringmongodb.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;import java.util.List;@Controller
public class BookController {@Autowiredprivate BookRepository bookRepository;/*** Handles listing of all books and searching.* @param model* @return*/@GetMapping({"/index", "/search"})public String showBooks(Model model, String keyword) {if (keyword != null) {model.addAttribute("books",this.bookRepository.findByTitleStartsWithOrAuthor(keyword, keyword));model.addAttribute("keyword", keyword);} else {List<Book> books = this.bookRepository.findAll();model.addAttribute("books", books);}return "index";}/*** Show form for adding a book document* @param book* @return*/@GetMapping("/add-book")public String showAddBookForm(Book book) {return "add-book";}/*** This will CREATE a books. C of CRUD.* @param book* @param result* @param model* @return*/@PostMapping("/add-book")public String addBook(Book book, BindingResult result, Model model) {if (result.hasErrors()) {return "add-book";}this.bookRepository.save(book);return "redirect:/index";}/*** Show form for editing a book document. The R in CRUD.* @param id* @param model* @return*/@GetMapping("/edit-book/{id}")public String showUpdateForm(@PathVariable("id") String id, Model model) {Book book = this.bookRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid book Id:" + id));model.addAttribute("book", book);return "edit-book";}/*** This will update a book document. The U in CRUD* @param id* @param book* @param result* @param model* @return*/@PostMapping("/edit-book/{id}")public String updateBook(@PathVariable("id") String id, Book book, BindingResult result, Model model) {if (result.hasErrors()) {book.setId(id);return "edit-book";}this.bookRepository.save(book);return "redirect:/index";}/*** This will delete a book document. The D in CRUD.* @param id* @param model* @return*/@GetMapping("/delete-book/{id}")public String deleteUser(@PathVariable("id") String id, Model model) {Book book = this.bookRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid book Id:" + id));this.bookRepository.delete(book);return "redirect:/index";}
}

MongoTemplate实现方式:

MongoTemplate是由org.springframework.data.mongodb.corepacket 提供一个Java类。它提供了一组用于与MongoDB交互的丰富特性,并充当Spring的MongoDB支持的中心类。此外,MongoTemplate是线程安全的,可以跨多个实例调用。MongoTemplate类实现了接口MongoOperations,提供了流畅的API进行Query, Criteria, Update等基本操作,此外,也支持泛型的方法实现。使用起来也非常方便,可直接将MongoTemplate作为类中的属性来使用。

import java.util.List;/*** @author  * @version 1.0* @date 2022/12/17 15:33*/
public interface BookService {List<Book> findAll();NewUser findById(String BookId);NewUser save(Book book);void deleteById(String BookId);
}
import org.springframework.beans.factory.annotation.Autowired;
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;public class BookServiceImpl implements BookService {@Autowiredprivate MongoTemplate template;@Overridepublic List<Book> findAll() {return template.findAll(Book.class);}@Overridepublic Book findById(String BookId) {return template.findById(BookId,Book.class);}@Overridepublic Book save(Book book) {template.save(book);return book;}@Overridepublic void deleteById(String BookId) {Query query = new Query();query.addCriteria(Criteria.where("id").is(BookId));template.remove(query, Book.class);}
}
@RestController
@RequestMapping("/book")
public class BookController {@Autowiredprivate final BookService bookService;@GetMapping("")public List<Book> getAllBooks() {return bookService.findAll();}@GetMapping("/{userId}")public Book getByBookId(@PathVariable String bookId) {return bookService.findById(bookId);}@PostMapping("/addNewBook")@ResponseBodypublic Book addNewBook(@RequestBody Book book) {return bookService.save(book);}@DeleteMapping("/{bookId}")public String delete(@PathVariable String bookId) {Book book = new Book();book.setId(bookId);bookService.deleteById(bookId);return "deleted: " + bookId;}@PutMapping("")public Book update(@RequestBody Book book) {return bookService.save(book);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/163938.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ARPG----C++学习记录03 Section7位置,偏移,函数

Pawn 新建一个Pawn的c类Bird&#xff0c;并且新建一个蓝图 添加一个Capsule&#xff08;胶囊&#xff09; 不知道要加啥头文件&#xff0c;去网站找https://docs.unrealengine.com/5.3/en-US/API/Runtime/Engine/Components/UCapsuleComponent/SetCapsuleSize/ 包含文件名字的头…

Linux安装DMETL4

Linux安装DMETL4 产品与环境介绍1 规划安装路径2 DM8安装路径2.1 达梦数据库程序安装路径2.2 初始化达梦数据库2.3 创建数据库用户名 DMETL 3 安装DMETL3.1 查看安装包与授权3.2 安装DMETL程序3.3 DMETL安装日志 4 启动DMETL5 DMETL连接数据库后会自动创建相关资源表6 达梦数据…

视频增强和修复工具 Topaz Video AI mac中文版功能

Topaz Video AI mac是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频&#xff0c;包括低分辨率视频、老旧影片、手机录制的视频等。 使用Topaz Video AI非常简单&#xff0c…

Java操作redis常见类型数据存储

一&#xff0c;Java连接Redis 1.1 导入依赖 打开IDEA在pom.xml导入依赖 注意&#xff1a;要在dependencies标签中导入 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> &…

【elasticsearch+kibana基于windows docker安装】

创建网络&#xff1a;es和kibana容器互联 docker network create es-net加载镜像 docker pull elasticsearch:7.12.1运行 docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -v $…

为什么深度学习模型的预测结果为数据集均值

如图&#xff0c;上边的为真值&#xff0c;下边的为预测值&#xff0c;可见预测值都是在30左右 一直debug不出来。后来发现是loss处写错了 用的torch.nn.MSELoss(pred,target)&#xff0c;其中pred的size是(batchsize,1), target的size是(batchsize)&#xff0c;此时会有警告但…

Go 面向对象,多态

面向对象 工程结构 新建一个oop.go package _oop // Package _oop 引用名称import ("fmt""strconv" )// GIRL 常量 const (// GIRL 自增GIRL Gender iotaFIRSTSECONDTHIRD )type Gender uint8 // 无符号的8位整数类型// User 结构体 type User struct…

Gin学习笔记

Gin学习笔记 Gin文档&#xff1a;https://pkg.go.dev/github.com/gin-gonic/gin 1、快速入门 1.1、安装Gin go get -u github.com/gin-gonic/gin1.2、main.go package mainimport ("github.com/gin-gonic/gin""net/http" )func main() {// 创建路由引…

个性化联邦学习-综述

介绍阅读的三篇个性化联邦学习的经典综述文章 Three Approaches for Personalization with Applications to Federated Learning 论文地址 文章的主要内容 介绍了用户聚类&#xff0c;数据插值&#xff0c;模型插值三种个性化联邦学习的方法。 用户聚类&#xff1a; 目的&a…

京东数据分析(京东销量):2023年9月京东投影机行业品牌销售排行榜

鲸参谋监测的京东平台9月份投影机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据数据显示&#xff0c;9月份&#xff0c;京东平台投影机的销量为13万&#xff0c;环比下滑约17%&#xff0c;同比下滑约25%&#xff1b;销售额将近2.6亿&#xff0c;环比下…

三国志14信息查询小程序(历史武将信息一览)制作更新过程03-主要页面的设计

1&#xff0c;小程序的默认显示 分为三部分&#xff0c;头部的标题、中间的内容区和底部的标签栏。点击标签可以切换不同页面&#xff0c;这是在app.json文件中配置的。代码如下&#xff1a; //所有用到的页面都需要在 pages 数组中列出&#xff0c;否则小程序可能会出现错误或…

js原型链

什么叫原型链 原型链是js中的核心&#xff0c;原型链将各个属性链接起来&#xff0c;在原型链上面定义&#xff0c;原型链上的其他属性能够使用&#xff0c;原型链就是保证继承 原型链区分 原型链分为显式原型和隐式原型 显式原型&#xff1a;只有函数和构建函数才有显式原型…