mongodb三分钟入门大全(mongodb简单使用)越早知道越好

随心笔谈1年前发布 编辑
153 0



目录一、MongoDB是什么1、维基百科2、简而言之二、MongoDB 的应用场景1、MongoDB事务2、多引擎支持各种强大的索引需求3、具体的应用场景4、以下是几个实际的应用案例:5、选择MongoDB的场景总结:三、MongoDB对比MySQL1、关键字对比四、SpringBoot整合MongoDB实现增删改查1、引入pom2、启动类Application3、实体类4、UserRepository5、业务层service6、测试类7、插入8、更新9、查询

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

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

MongoDB是文档型的NoSQL数据库,数据以文档(对应关系型数据库的记录)的形式在MongoDB中保存,文档实际上就是一个个JSON字符串,使用JSON的好处是非常直观,通过一系列的Key-Value键值对来表示数据,符合我们的阅读习惯。

在Java、Python中对JSON都有很好的支持,数据从MongoDB中读取出来后,可无需转换直接使用;支持丰富的数据结构,Value可以是普通的整型、字符串、数组、嵌套的子文档,使用嵌套的好处是在MongoDB中仅需一次简单的查询就能够获取到你所需的数据。

MongoDB目前只支持单文档事务,MongoDB暂时不适合需要复杂事务的场景。

灵活的文档模型JSON格式存储最接近真实对象模型,对开发者友好,方便快速开发迭代,可用复制集满足数据高可靠、高可用的需求,运维较为简单、故障自动切换可扩展分片集群海量数据存储。

支持地理位置索引可用于构建各种O2O应用文本索引解决搜索的需求TTL索引解决历史数据过期的需求Gridfs解决文件存储的需求aggregation & mapreduce解决数据分析场景需求,可以自己写查询语句或脚本,将请求分发到 MongoDB 上完成。

传统的关系型数据库在解决三高问题上的力不从心。

何为三高?
High performance – 对数据库高并发读写的需求。Huge Storage – 对海量数据的高效率存储和访问的需求。High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。MongoDB可以完美解决三高问题。

(1)游戏场景

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

(2)物流场景

使用MongoDB存储订单信息、订单状态、物流信息,订单状态在运送过程中飞速迭代、以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更查出来,牛逼plus。

(3)社交场景

使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。

(4)物联网场景

使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。

(5)视频直播

使用MongoDB存储用户信息、点赞互动信息。

数据量大读写操作频繁数据价值较低,对事务要求不高

MySQLMongoDB解释说明databasedatabase数据库tablecollection表/集合rowdocument行/文档columnfield字段/域indexindex索引join嵌入文档表关联/MongoDB不支持join,MongoDB通过嵌入式文档来替代多表连接primary keyprimary key主键/MongoDB自动将_id字段设置为主键

<?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>

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;
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;//主键
//该属性对应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
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);
}
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();
}

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));
}
}

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(“—-总记录数:”+pageResponse.getTotalElements());
System.out.println(“—-当前页数据:”+pageResponse.getContent());
}

@Test
public void deleteUser(){
String id=”61e3daf31faa1f5b0e6849f8”;
userService.deleteUserById(id);
}
}

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

到此这篇关于mongodb三分钟入门大全的文章就介绍到这了,更多相关mongodb入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:MongoDB数据库简介与安装方法MongoDB使用场景总结MongoDB数据库介绍并用.NET?Core对其进行编码.Net?Core中使用MongoDB搭建集群与项目实战MongoDB数据库基本概念解析

© 版权声明

相关文章