【项目知识点汇总】四、mongodb 安装,Java,spring boot 分别使用,分页查找,常用sql语句

前言

本次项目采用mongodb作为数据库存储,本文主要内容分为以下几点:

常用教程:https://www.w3cschool.cn/mongodb/

1、mongo安装,配置,启动,可视化工具Robo

2、mongo 数据备份,导入

3、mongo常用的sql语句

4、java 使用 mongo

5、spring boot 使用 mongo,大数据处理过程:分页查找

一、Mongo安装,配置,启动,可视化工具Robo

1、直接下载mongo安装,

2、进入安装目录bin的同级目录创建 data\db 文件夹

3、进入bin目录,如无就创建 mongodb.conf 文件,输入如下内容

bind_ip=0.0.0.0  # 指定可以接收局域网内所有请求,如果是127.0.0.1 就只能接收本机请求,别的设备进不来
dbpath=C:\MongoDB\Server\3.4\data\db #设置db的存储路径,如果不设置就只能在根目录下面

4、bin目录下,建立startmongo.bat文件,内容如下

mongod --config mongodb.conf

5、直接启动startmongo.bat文件即可启动mongo

6、可视化工具 Robo

二、Mongo 数据备份,导入 mongodump , mongorestore

mongo安装目录的bin目录下面 进入cmd,使用  mongodump 即可把当前数据库 dump出来,完成后有一个dump文件夹

同样目录采用mongorestore可以把数据从dump文件夹导入到数据库中

三、Mongo常用SQL语句

概念

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins   表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
数据类型 描述
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Arrays 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于内嵌文档。
Null 用于创建空值。
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。

1、创建数据库,如果不存在就创建,如果存在就切换到目标数据库使用:use DATABASE_NAME

2、查看所有数据库:show dbs

3、切换到指定数据库,再执行,比如  use db1, 再执行下面语句,就会删除,可以通过 show dbs 来验证:db.dropDatabase()

4、删除集合:db.collection.drop()

5、插入文档:MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:db.COLLECTION_NAME.insert(document)
      db.col.insert({title: 'MongoDB 教程'})

6、查询数据:db.col.find()

7、更新:db.collection.update( criteria, objNew, upsert, multi )

      db.userdetails.update({"user_id" : "QRSTBWN"},{"user_id" : "QRSTBWN","password" :"NEWPASSWORD" })

8、删除:db.col.remove({'title':'MongoDB 教程'})

9、查询:db.col.find({"by":"w3cschool", "title":"MongoDB 教程"})

查询键 by 值为 w3cschool 或键 title 值为 MongoDB 教程 的文档

db.col.find({$or:[{"by":"w3cschool"},{"title": "MongoDB 教程"}]})

 

演示了 AND 和 OR 联合使用,类似 SQL 语句为: 'where likes>50 AND (by = 'w3cschool' OR title = 'MongoDB 教程')'

db.col.find({"likes": {$gt:50}, $or: [{"by": "w3cschool"},{"title": "MongoDB 教程"}]}) 

 

四、Java使用mongo

1、需要使用 xx - driver.jar

2、存储如下,需要把对象转为json对象,项目使用fastjson

    private static MongoClient mongoClient;
    private static DB psdoc;
    private final static String MONGO_URL = "127.0.0.1:27017";
    private final static String DBName = "TestMongo";

    mongoClient = new MongoClient(MONGO_URL);
    psdoc = mongoClient.getDB(DBName);

    DBCollection testBeanData = psdoc.getCollection("testBean");
    DBObject testBeanObject = (DBObject)com.mongodb.util.JSON.parse(testBeanStr);
    testBeanData.insert(testBeanObject);

五、Spring Boot 使用 mongo

1、prom.xml增加mongo

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

2、定义bean

@Document // 标识被Mongo存储为文档

public class TestBean {

@Id  // 标识mongo存储的id

private String id;

private String userName;

。。。。}

3、定义MongoRepository 

import java.util.List;
public interface TestBeanRepository  extends MongoRepository<TestBean, String> {
    List<TestBean> findByUserName(String userName); // 根据userName查找
    Page<TestBean> findByUserName(String userName, Pageable pageable); // 分页查找
}

4、在controller文件里面,定义数据库查询变量,定义请求访问,进行分页查询

@RestController
public class TestController {
    @Autowired // 注解,直接引用注入的bean
    TestBeanRepository testBeanRepository;
    @RequestMapping("/testBean")
    public TestBean testBean(Model model, String userName, Integer index) { 
        int size = 1; // 标识1页一个数据
        int page = index / size;  // 页序号从0开始的
        TestBean testBean = new TestBean();
 
        Pageable pageable = new PageRequest(page, size, Sort.Direction.ASC, "_id"); // 分页查询,按照id升序
        Page<TestBean> models = testBeanRepository.findByUserName(userName,pageable);
        testBean =  models.getContent().get(0); 

        return  testBean;
    }
}

六、常见错误

1、启动mongo提示有lock锁,要关闭mongo进程,删掉指定路径的lock文件即可

猜你喜欢

转载自blog.csdn.net/zishuiyi/article/details/82824754
今日推荐