mongodb数据库

首先介绍一下sql和nosql的区别

        SQL:关系数据库(Relational database,数据存储在表结构中,关系型数据库当中一个表就是一个关系,一个关系数据库可以包含多个表。关系型数据库的主要代表:SQL Server,Oracle,MySQL

        NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",是对不同于传统的关系数据库的数据库管理系统的统称,缺乏传统的原子事务机制(不支持事务),collection之间相对独立(不支持联表查询)换来更高的读写性能以及更优的扩展性,非关系型数据库主要代表:MongoDB,Redis

        NoSQL 与 SQL 存在许多显著的不同点,其中最重要的是 NoSQL 不使用 SQL 作为查询语言。其数据存储可以不需要固定的表格模式关系,也经常会避免使用 SQL 的 JOIN 操作,一般有水平可扩展性的特征。

mongodb数据库

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

        MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

        MongoDB 是一个面向文档存储的数据库,文档类似于 JSON 对象,操作起来比较简单和容易。

        MongoDB解决Mysql 的“三高”问题:

  • 1.对数据库高并发写入需求
  • 2.对海量数据高效率存储访问需求
  • 3.对数据库高扩展和高可用的需求

        MongoDB 实际应用:

  • 1.社交场景,比如朋友圈,附近的人的地点的存储
  • 2.游戏场景,比如用户当前装备,得分等
  • 3.物流场景,比如快递的位置,状态,途径
  • 4.视频场景,比如直播中的点赞数和互动留言等

参考菜鸟教程提供的关系图,能够更直观了解两大数据库区别 MongoDB 概念解析 | 菜鸟教程 (runoob.com)

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

java操作mongodb

  本文以maven项目做演示:

 首先,在pom.xml里导入坐标

<!-- mongodb链接驱动 -->
<dependency>
   <groupId>org.mongodb</groupId>
   <artifactId>mongodb-driver-sync</artifactId>
   <version>3.6.4</version>
</dependency>

<!-- Google Gson -->
<dependency>
   <groupId>com.google.code.gson</groupId>
   <artifactId>gson</artifactId>
   <version>2.8.2</version>
</dependency>

java链接数据库

package com.apesource;


import com.mongodb.MongoClient;
import com.mongodb.client.MongoIterable;

/**
 * @version 1.0
 * @Author Harris
 * @since 2022/7/13
 */
public class MongoHelper {

    public static void main(String[] args) {
      
        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient( "localhost" , 27017 );

        //获取所有库
        MongoIterable<String> databaseNames = mongo.listDatabaseNames();
        for (String databaseName : databaseNames) {
            System.out.println(databaseName);
        }

        //查看fruitStore库中所有collection名字
        MongoDatabase fruitStore = mongo.getDatabase("fruitStore");
        MongoIterable<String> collectionNames = fruitStore.listCollectionNames();
        for (String collectionName : collectionNames) {
            System.out.println(collectionName);
        }
        
        mongo.close();

    }

}

插入一条数据

package com.apesource;


import com.google.gson.Gson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;


/**
 * @version 1.0
 * @Author Harris
 * @since 2022/7/13
 */
public class InsertMongodb {


    public static void main(String[] args) {
        //创建Gson对象
        Gson gson = new Gson();

        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient( "localhost" , 27017 );

        //获取fruitStore数据库
        MongoDatabase fruitStore = mongo.getDatabase("fruitStore");

        //获取collection
        MongoCollection<Document> comm = fruitStore.getCollection("comm");

        //创建插入对象
        Document document = new Document("field1", "value1");
        document.append("field2","value2");

        //插入
        comm.insertOne(document);

        mongo.close();

    }

}

运行结果

 插入多条数据

package com.apesource;

import com.google.gson.Gson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @version 1.0
 * @Author Harris
 * @since 2022/7/13
 */
public class InsertMongodb {

    public static void main(String[] args) {
        //创建Gson对象
        Gson gson = new Gson();

        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        //获取fruitStore数据库
        MongoDatabase fruitStore = mongo.getDatabase("fruitStore");

        //获取collection
        MongoCollection<Document> comm = fruitStore.getCollection("comm");

        //创建插入对象
        List<Document> documents = new ArrayList<Document>();

        for (int i = 0; i < 5; i++) {
            Document document = new Document("field1", new Date()).append("field2", new Date());
            documents.add(document);
        }

        //插入
        comm.insertMany(documents);

        mongo.close();

    }

}

运行结果

删除数据

package com.apesource;

import com.google.gson.Gson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import org.bson.conversions.Bson;

/**
 * @version 1.0
 * @Author Harris
 * @since 2022/7/13
 */
public class DelMongodb {

    public static void main(String[] args) {
        //创建Gson对象
        Gson gson = new Gson();

        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        //获取fruitStore数据库
        MongoDatabase fruitStore = mongo.getDatabase("fruitStore");

        //获取collection
        MongoCollection<Document> comm = fruitStore.getCollection("comm");

        //创建删除对象
        Document document = new Document("field1", "value1");
        Bson bson = Document.parse(gson.toJson(document));

        //删除一条
        comm.deleteOne(bson);

        //删除多条
        //comm.deleteMany(bson);

        mongo.close();

    }

}

修改数据

package com.apesource;

import com.google.gson.Gson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import org.bson.Document;

/**
 * @version 1.0
 * @Author Harris
 * @since 2022/7/13
 */
public class UpdMongodb {

    public static void main(String[] args) {
        //创建Gson对象
        Gson gson = new Gson();

        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        //获取fruitStore数据库
        MongoDatabase fruitStore = mongo.getDatabase("fruitStore");

        //获取collection
        MongoCollection<Document> comm = fruitStore.getCollection("comm");

        //修改一条
        comm.updateOne(Filters.eq("field1","abc"), Updates.set("field2", 150));

        //修改多条
        //comm.updateMany(Filters.eq("field1","abc"), Updates.set("field2", 150));

        mongo.close();

    }

}

查询

package com.apesource;

import com.google.gson.Gson;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import org.bson.conversions.Bson;

/**
 * @version 1.0
 * @Author Harris
 * @since 2022/7/13
 */
public class Findmongodb {

    public static void main(String[] args) {
        //创建Gson对象
        Gson gson = new Gson();

        // 创建 MongoDB 连接
        MongoClient mongo = new MongoClient("localhost", 27017);

        //获取fruitStore数据库
        MongoDatabase fruitStore = mongo.getDatabase("fruitStore");

        //获取collection
        MongoCollection<Document> comm = fruitStore.getCollection("comm");

        //全查
        FindIterable<Document> documents = comm.find();
        //带条件查询
        FindIterable<Document> documents1 = comm.find(Filters.eq("field1", "abc"));
        FindIterable<Document> documents2 = comm.find(Filters.and(Filters.eq("field1","abc"),Filters.gte("field2","100")));
        //模糊查询(正则表达式)
        FindIterable<Document> documents3 = comm.find(Filters.regex("field1", "不能"));
        //分页查询
        FindIterable<Document> documents4 = comm.find().skip(3).limit(2);
        //排序查询(-1表示降序,1表示升序)
        Bson b = new Document("id",-1);
        FindIterable<Document> documents5 = comm.find().sort(b);

        MongoCursor<Document> iterator = documents.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

        mongo.close();

    }

}

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值