前言

本次项目采用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

PS: 安装可能半路卡住,因为选择了下载UI管理器,网络不通情况下就不行了

参考:

MongoDB 分页多了报错了 springboot mongodb 分页_json

MongoDB 分页多了报错了 springboot mongodb 分页_MongoDB 分页多了报错了_02

断网启动时,提示缺少dll,安装即可

 

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

1、整个数据库导入导出

mongo安装目录的bin目录下面 进入cmd,使用  mongodump

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

 

2、导入导出单个表

从远程数据表拉取数据到本地json文件

mongoexport --host 远程服务器IP --port 远程服务器端口 --username 远程数据库用户名 --password 远程数据库密码 --db 数据库名 --collection 数据表名 -q "{_id: ObjectId('')}" --out /home/user/Public/table.json

将本地json文件导入到本地数据库

mongoimport --db 本地数据库名 --collection 本地数据表 --file ~/table.json --type json

 

三、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文件即可

MongoDB 分页多了报错了 springboot mongodb 分页_数据库_03