当前位置:网站首页>mongodb数据库
mongodb数据库
2022-07-19 14:24:00 【HarrisDong】
首先介绍一下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 |
---|---|
database数据库 | database数据库 |
table表 | collection集合 |
row记录行 | document记录文档 |
column数据字段、列、 | field键值对K、字段 |
index索引 | index索引 |
join表链接 | mongodb不支持表链接 |
primary key主键(自定义的) | primary key主键(自动生成,将_id字段设置为主键) |
数据类型 | 描述 |
---|---|
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();
}
}
边栏推荐
- spark源码(七)RDD cache、persist、checkpoint功能区别和源码解析
- 建立动态规划状态转移方程的练习
- 数据库扩容也可以如此丝滑,MySQL千亿级数据生产环境扩容实战
- 小程序毕设作品之微信预约订座小程序毕业设计(6)开题答辩PPT
- Some slightly complex SQL statements
- 理财产品的年化是4%,买10000元,一个月能有多少收益?
- In the first half of the year, Guangdong's exports increased by 7.3%, and high-tech products accelerated "going to sea"
- XML 和 JSON
- 牛客多校1 C Grab the Seat!
- phpExcel 报错:ERR_INVALID_RESPONSE
猜你喜欢
直播预告 | 多云时代如何建设企业云管理平台?
可视化查询(sp_helptext)——快速查询包含指定字符串的存储过程(附源码)
Faith never dies, love when burning | Zhongchuang computing power participates in the hacker marathon
Programmer's health quench prevention guide 6:[Science] exercise
kylin开启dashboard监控面板
深入揭秘 epoll 是如何实现 IO 多路复用的
小程序毕设作品之微信小程序点餐系统毕业设计(2)小程序功能
Worthington核心酶——木瓜蛋白酶的特征及相关应用
【毕业设计】基于微服务框架的电影院订票管理系统
小程序毕设作品之微信预约订座小程序毕业设计(8)毕业设计论文模板
随机推荐
ArcGIS10.2 安装教程
A page widgetization practice
小程序毕设作品之微信预约订座小程序毕业设计(6)开题答辩PPT
小程序毕设作品之微信运动场地预约小程序毕业设计(2)小程序功能
B. Mark the Dust Sweeper(思维)
[英雄星球七月集训LeetCode解题日报] 第19日 二叉树
数据库高并发下怎么避免重复数据产生
乳酸脱氢酶(LDH)活性检测试剂盒 丨Abbkine详细说明书
Detailed explanation of kernel function of SVM
上半年广东出口增长7.3%,高新技术产品加快“出海”
Database expansion can also be so smooth, MySQL 100 billion level data production environment expansion practice
ProSci 15-PGDH重组蛋白说明书
软考 系统架构设计师 简明教程 | 软件生命周期
Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection
低代码软件开发平台怎么选?
国际顶会OSDI首度收录淘宝系统论文,端云协同智能获大会主旨演讲推荐
响应式织梦模板装修装饰设计类网站
读写模型整理笔记
【毕业设计】基于微服务框架的电影院订票管理系统
Some slightly complex SQL statements