- 2024-11-28 12:12:50
- 2723 热度
- 0 评论
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。本文介绍了Java操作MongoDB数据库的使用。
模式自由 :可以把不同结构的文档存储在同一个数据库里
面向集合的存储:适合存储 JSON风格文件的形式
完整的索引支持:对任何属性可索引
复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移
自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器
丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组
快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划
高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)
客户端MongoDBCompass,下载地址:
https://www.mongodb.com/try/download/compass
这次先不自己安装了,看到阿里云有试用,于是花费9.9元购买了三个月的试用。
阿里有很多选项提供选购,这次购买的是Serverless实例,Serverless轻量级低成本;单节点高性价比;多节点副本集保障业务高可用;分片集群自由配置弹性扩展。
购买地址:https://www.aliyun.com/product/mongodb
为了方便测试使用,做如下操作:
购买后进入控制台,重置mongodb密码
然后进入数据库连接,申请一个公网进行访问
然后进入安全设置,设置允许所有人访问
然后在工具输入公网访问地址:
mongodb://用户名:密码@连接地址:端口/admin
具体连接地址从阿里复制即可,复制过来的连接信息只要改下你的密码即可,然后就可以进入管理页面
Maven中引入MongoDB客户端
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.0.4</version> </dependency>
MongoDB的3.x版本Java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别。
例如用Document替换BasicDBObject、通过Builders类构建Bson替代直接输入$命令等。
以下JAVA代码演示了对于MongoDB的增删改查操作
package com.example.zMongoDB; import java.util.ArrayList; import java.util.List; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; 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; public class MongoDBJDBC { private static MongoClient mongoClient = null; public static void main(String args[]) { testQuery(); } public static void testQuery() { MongoDatabase mongoDatabase = getDB(); // 这里的 "user" 表示集合的名字,如果指定的集合不存在,mongoDB将会在你第一次插入文档时创建集合。 MongoCollection<Document> collection = mongoDatabase.getCollection("user"); // 查找集合中的所有文档 FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> cursor = findIterable.iterator(); while (cursor.hasNext()) { System.out.println(cursor.next()); } // 指定查询过滤器 Bson filter = Filters.eq("name", "张1"); // 指定查询过滤器查询 findIterable = collection.find(filter); cursor = findIterable.iterator(); while (cursor.hasNext()) { System.out.println(cursor.next()); } // 查找集合中的所有文档,-1表示倒序 findIterable = collection.find().sort(new BasicDBObject("age", -1)); // 取出查询到的第一个文档 Document document = (Document) findIterable.first(); // 打印输出 System.out.println(document); closeDB(); } public static void testUpdate() { MongoDatabase mongoDatabase = getDB(); // 这里的 "user" 表示集合的名字,如果指定的集合不存在,mongoDB将会在你第一次插入文档时创建集合。 MongoCollection<Document> collection = mongoDatabase.getCollection("user"); // 修改过滤器 Bson filter = Filters.eq("name", "阿娇"); // 指定修改的更新文档 Document document = new Document("$set", new Document("age", 22)); // 修改单个文档 collection.updateOne(filter, document); // 修改多个文档 collection.updateMany(filter, document); closeDB(); } public static void testDel() { MongoDatabase mongoDatabase = getDB(); // 这里的 "user" 表示集合的名字,如果指定的集合不存在,mongoDB将会在你第一次插入文档时创建集合。 MongoCollection<Document> collection = mongoDatabase.getCollection("user"); // 申明删除条件,eq等于,也可以设置大于小于等条件 Bson filter = Filters.eq("age", 18); // 删除与筛选器匹配的单个文档 collection.deleteOne(filter); // 删除与筛选器匹配的所有文档 collection.deleteMany(filter); closeDB(); } public static void testAdd() { MongoDatabase mongoDatabase = getDB(); // 这里的 "user" 表示集合的名字,如果指定的集合不存在,mongoDB将会在你第一次插入文档时创建集合。 MongoCollection<Document> collection = mongoDatabase.getCollection("user"); Document document = new Document("name", "阿娇").append("sex", "女").append("age", 18); collection.insertOne(document); // 要插入的数据 List<Document> list = new ArrayList<>(); for (int i = 1; i <= 3; i++) { Document documents = new Document("name", "张" + i).append("sex", "男").append("age", 20 + i); list.add(documents); } // 插入多个文档 collection.insertMany(list); closeDB(); } public static MongoDatabase getDB() { List<ServerAddress> adds = new ArrayList<>(); ServerAddress serverAddress = new ServerAddress("地址", 3717); adds.add(serverAddress); List<MongoCredential> credentials = new ArrayList<>(); // 用户名 数据库名称 密码 MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("用户名", "admin", "密码".toCharArray()); credentials.add(mongoCredential); mongoClient = new MongoClient(adds, credentials); // 这里的 "test" 表示数据库名,若指定的数据库不存在,mongoDB将会在你第一次插入文档时创建数据库。 MongoDatabase mongoDatabase = mongoClient.getDatabase("test"); return mongoDatabase; } public static void closeDB() { mongoClient.close(); } }
可以通过客户端看到已经录入进去的数据
END
- Spring(403)
- Boot(208)
- Spring Boot(187)
- Java(82)
- Cloud(82)
- Spring Cloud(82)
- Security(60)
- Spring Security(54)
- Boot2(51)
- Spring Boot2(51)
- Redis(31)
- SQL(29)
- Mysql(25)
- IDE(24)
- Dalston(24)
- JDBC(22)
- IDEA(22)
- mongoDB(22)
- MVC(22)
- Web(21)
- CLI(20)
- Alibaba(19)
- SpringMVC(19)
- SpringBoot(17)
- Docker(17)
- Eclipse(16)
- Vue(16)
- Git(16)
- JPA(15)
- Apache(15)
- ORA(15)
- Oracle(14)
- jdk(14)
- Tomcat(14)
- Linux(14)
- HTTP(14)
- Mybatis(14)
- XML(13)
- JdbcTemplate(13)
- OAuth(13)
- Nacos(13)
- Pro(13)
- JSON(12)
- OAuth2(12)
- Data(12)
- stream(11)
- int(11)
- Myeclipse(11)
- not(10)
- Bug(10)
- maven(9)
- Map(9)
- Hystrix(9)
- ast(9)
- APP(8)
- Bit(8)
- API(8)
- session(8)
- Window(8)
- Swagger(8)
- JavaMail(7)
- Cache(7)
- File(7)
- IntelliJ(7)
- mail(7)
- windows(7)
- too(7)
- HTML(7)
- Github(7)
- Excel(6)
- Log4J(6)
- pushlet(6)
- apt(6)
- read(6)
- Freemarker(6)
- WebFlux(6)
- JSP(6)
- Bean(6)
- error(6)
- Server(6)
- nginx(6)
- ueditor(6)
- jar(6)
- ehcache(6)
- UDP(6)
- RabbitMQ(6)
- star(6)
- and(6)
- Struts(5)
- string(5)
- script(5)
- Syntaxhighlighter(5)
- Tool(5)
- Controller(5)
- swagger2(5)
- ldquo(5)
- input(5)
- Servlet(5)
- Config(5)
- discuz(5)