docker安装mongodb及java连接实战

1.docker部署mongodb
docker run --name mongodb -d -p 27017:27017 -v /data/mongodbdata:/data/db -e MONGO_INITDB_ROOT_USERNAME=testmongo -e MONGO_INITDB_ROOT_PASSWORD=test123456 mongodb:4.0.112.项目实战
<dependencies><dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.0.4</version></dependency>
</dependencies>import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;//mongodb 连接数据库工具类
public class MongoDBUtil {//不通过认证获取连接数据库对象public static MongoDatabase getConnect(){//连接到 mongodb 服务MongoClient mongoClient = new MongoClient("localhost", 27017);//连接到数据库MongoDatabase mongoDatabase = mongoClient.getDatabase("test");//返回连接数据库对象return mongoDatabase;}//需要密码认证方式连接public static MongoDatabase getConnect2(){List<ServerAddress> adds = new ArrayList<>();//ServerAddress()两个参数分别为 服务器地址 和 端口ServerAddress serverAddress = new ServerAddress("localhost", 27017);adds.add(serverAddress);List<MongoCredential> credentials = new ArrayList<>();//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());credentials.add(mongoCredential);//通过连接认证获取MongoDB连接MongoClient mongoClient = new MongoClient(adds, credentials);//连接到数据库MongoDatabase mongoDatabase = mongoClient.getDatabase("test");//返回连接数据库对象return mongoDatabase;}
}//插入一个文档
@Test
public void insertOneTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//要插入的数据Document document = new Document("name","张三").append("sex", "男").append("age", 18);//插入一个文档collection.insertOne(document);
}//插入多个文档
@Test
public void insertManyTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//要插入的数据List<Document> list = new ArrayList<>();for(int i = 1; i <= 3; i++) {Document document = new Document("name", "张三").append("sex", "男").append("age", 18);list.add(document);}//插入多个文档collection.insertMany(list);
}//删除与筛选器匹配的单个文档
@Test
public void deleteOneTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//申明删除条件Bson filter = Filters.eq("age",18);//删除与筛选器匹配的单个文档collection.deleteOne(filter);
}//删除与筛选器匹配的所有文档
@Test
public void deleteManyTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//申明删除条件Bson filter = Filters.eq("age",18);//删除与筛选器匹配的所有文档collection.deleteMany(filter);
}//修改单个文档
@Test
public void updateOneTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//修改过滤器Bson filter = Filters.eq("name", "张三");//指定修改的更新文档Document document = new Document("$set", new Document("age", 100));//修改单个文档collection.updateOne(filter, document);
}//修改多个文档
@Test
public void updateManyTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//修改过滤器Bson filter = Filters.eq("name", "张三");//指定修改的更新文档Document document = new Document("$set", new Document("age", 100));//修改多个文档collection.updateMany(filter, document);
}//查找集合中的所有文档
@Test
public void findTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//查找集合中的所有文档FindIterable findIterable = collection.find();MongoCursor cursor = findIterable.iterator();while (cursor.hasNext()) {System.out.println(cursor.next());}
}//指定查询过滤器查询
@Test
public void FilterfindTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//指定查询过滤器Bson filter = Filters.eq("name", "张三");//指定查询过滤器查询FindIterable findIterable = collection.find(filter);MongoCursor cursor = findIterable.iterator();while (cursor.hasNext()) {System.out.println(cursor.next());}
}//取出查询到的第一个文档
@Test
public void findTest(){//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");//查找集合中的所有文档FindIterable findIterable = collection.find();//取出查询到的第一个文档Document document = (Document) findIterable.first();//打印输出System.out.println(document);
}import com.mongodb.client.FindIterable;
import org.bson.Document;
import java.util.List;
import java.util.ArrayList;public class MongoDBPagingExample {public static void main(String[] args) {// 连接到MongoDB(同上)MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");MongoDatabase database = mongoClient.getDatabase("yourDatabaseName");MongoCollection<Document> collection = database.getCollection("yourCollectionName");//或者//获取数据库连接对象MongoDatabase mongoDatabase = MongoDBUtil.getConnect();//获取集合MongoCollection<Document> collection = mongoDatabase.getCollection("user");// 分页参数int pageNumber = 1; // 页码,从1开始int pageSize = 10;  // 每页大小int skipCount = (pageNumber - 1) * pageSize; // 计算需要跳过的文档数// 执行分页查询FindIterable<Document> findIterable = collection.find().skip(skipCount).limit(pageSize);List<Document> documents = new ArrayList<>();findIterable.forEach(documents::add); // 将结果添加到列表中// 输出结果documents.forEach(doc -> System.out.println(doc.toJson()));}
}

java获取MongoDB数据库的名称、表名和字段名及相关信息

import com.mongodb.client.*;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import org.bson.BsonDocument;
import org.bson.BsonValue;
import org.bson.Document;import java.util.Map;
import java.util.Objects;public class MongodbDemo {// 1.获取MongoClient客户端public static MongoClient getMongoClient(String url) {MongoClientURI mongoClientURI = new MongoClientURI(url);MongoClient mongoClient = new MongoClient(mongoClientURI);return mongoClient;}// 2.获取数据库列表public static ListDatabasesIterable<Document> getDataBases(String url) {MongoClient mongoClient = getMongoClient(url);ListDatabasesIterable<Document> listDatabasesIterable = mongoClient.listDatabases();for (Document database: listDatabasesIterable) {System.out.println("DataBase : " + database.get("name"));}close(mongoClient);return listDatabasesIterable;}// 3.获取数据库中的集合public static void getCollectionNames(String url) {ListDatabasesIterable<Document> listDatabasesIterable = getDataBases(url);MongoClient mongoClient = getMongoClient(url);for (Document database: listDatabasesIterable) {String databaseName = String.valueOf(database.get("name"));// 跳过系统相关表if ("admin".equals(databaseName)|| "config".equals(databaseName)|| "local".equals(databaseName)) {continue;}MongoDatabase mongoDatabase = mongoClient.getDatabase(databaseName);MongoIterable<String> collectionNames = mongoDatabase.listCollectionNames();System.out.println("DataBase : " + databaseName);for (String collectionName: collectionNames) {System.out.println(" CollectionName : " + collectionName);getField(mongoDatabase, collectionName);getDocument(mongoDatabase, collectionName);}}close(mongoClient);}// 4.获取集合中的字段及格式public static void getField(MongoDatabase mongoDatabase, String collectionName) {Document doc = mongoDatabase.getCollection(collectionName).find().first();System.out.println("Collection : " + collectionName);if (Objects.nonNull(doc)) {BsonDocument document = BsonDocument.parse(doc.toJson());for(Map.Entry<String, BsonValue> entry : document.entrySet()){BsonValue value = entry.getValue();String type = value.getBsonType().name();System.out.println("Column : " + entry.getKey() + " ==== ColumnType : " + type);}}}// 5.获取集合中的数据public static void getDocument(MongoDatabase mongoDatabase, String collectionName) {MongoCollection<Document> collection =  mongoDatabase.getCollection(collectionName);// 查询限制50条FindIterable<Document> findIterable = collection.find().limit(50);System.out.println("CollectionName : " + collectionName);for (Document document : findIterable) {System.out.println(document);}}// 6.关闭客户端连接public static void close(MongoClient mongoClient) {if (Objects.nonNull(mongoClient)) {mongoClient.close();}}// 测试public static void main(String[] args) {String path = "mongodb://127.0.0.1:27017";MongoClient client = getMongoClient(path);ListDatabasesIterable<Document>  listDatabases = getDataBases(path);getCollectionNames(path);getField(client.getDatabase("testdata"), "account");getDocument(client.getDatabase("testdata"), "account");close(client);}
}
//获取链接对象,参数1为url,参数2为端口号
MongoClient mongoclient=new MongoClient("127.0.0.1",27017);
//获取所有库名的迭代器
MongoIterable<String> list= mongoclient.listDatebaseNames();
for(String str:list){System.out.println(str);//查看所有库名
}
//获取链接对象,参数1为url,参数2为端口号
MongoClient mongoclient=new MongoClient("127.0.0.1",27017);
//获取库对象,参数为库名
MongoDatabase db=mongoclient.getDatabase("school");
//获取当前库对象的所有集合名的迭代器
MongoIterable<String> list=db.getlistCollectionNames();
for(String str:list){System.out.println(str);//获取所有集合名
}
//获取集合对象,参数为集合名
MongoCollention<Document> collection=db.getCollection("student");
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import org.bson.Document;
import org.bson.codecs.configuration.CodecRegistries;
import org.bson.codecs.configuration.CodecRegistry;import java.util.HashSet;
import java.util.Set;public class MongoDBFieldRetriever {public static void main(String[] args) {// MongoDB连接字符串String connectionString = "mongodb://localhost:27017";String dbName = "your_database_name";String collectionName = "your_collection_name";// 创建MongoDB客户端try (MongoClient mongoClient = MongoClients.create(connectionString)) {// 选择数据库和集合MongoDatabase database = mongoClient.getDatabase(dbName);MongoCollection<Document> collection = database.getCollection(collectionName);// 获取集合中的第一个文档MongoCursor<Document> cursor = collection.find().iterator();if (cursor.hasNext()) {Document firstDocument = cursor.next();// 获取字段及其类型Set<String> fields = new HashSet<>();for (String key : firstDocument.keySet()) {fields.add(key + " : " + firstDocument.get(key).getClass().getSimpleName());}// 输出结果System.out.println("Fields and their types in the collection:");for (String field : fields) {System.out.println(field);}}}}
}
1.新增数据//获取集合对象
MongoCollection<Document> collection = db.getCollection("student");
//新增时创建一个Docuement对象,以键值对的形式传入内容
Document document = new Document();
document.put("name", "黑蛋");
document.put("age", 9);
document.put("sex", "公");
//添加一条数据,没有返回值
collection.insertOne(document);
//新增多条数据,传入一个document集合
collection.insertMany(null);
2.修改数据//修改条件
Bson eq = Filters.eq("name","黑蛋");
//修改匹配到的第一条
UpdateResult updateOne = collection.updateOne(eq, new Document("$set",new Document("age",20)));
//修改匹配的多条
collection.updateMany(eq, null);
修改的返回值内容
AcknowledgedUpdateResult{matchedCount=0, modifiedCount=0, upsertedId=null}
matchedCount:代表匹配到的文档数modifiedCount:代表被修改的文档数upsertedId:代表修改的文档id(主键)3.数据删除//条件
Bson eq = Filters.eq("name","黑蛋");
//删除一条符合的
DeleteResult deleteOne = collection.deleteOne(eq);
//删除 所有符合条件的
DeleteResult deleteMany = collection.deleteMany(eq);
删除的返回值内容
AcknowledgedDeleteResult{deletedCount=0}
deletedCount:被删除的文档数4.查询数据//无条件全查
FindIterable<Document> find = collection.find();
//带条件查询
Bson eq = Filters.regex("name", "蛋");
FindIterable<Document> find = collection.find(eq);
查询的结果集映射这种解析方式我们必须知道文档中的各个字段名//全查
FindIterable<Document> find = collection.find();//创建一个实体类集合准备接收结果
List<Student>  slist = new ArrayList<Student>();
//获取结果集迭代器对象    
MongoCursor<Document> iterator = find.iterator();while(iterator.hasNext()) {Student s =  new Student();Document next = iterator.next();s.setSname(next.getString("name"));s.setSsex(next.getString("sex"));s.setSid(next.getInteger("sid"));    //将结果添加至实体类集合slist.add(s);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95764.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java设计模式之《工厂模式》

目录 1、介绍 1.1、定义 1.2、优缺点 1.3、使用场景 2、实现 2.1、简单工厂模式 2.2、工厂方法模式 2.3、抽象工厂模式 3、小结 前言 在面向对象编程中&#xff0c;创建对象实例最常用的方式就是通过 new 操作符构造一个对象实例&#xff0c;但在某些情况下&#xff0…

【异步】js中异步的实现方式 async await /Promise / Generator

JS的异步相关知识 js里面一共有以下异步的解决方案 传统的回调 省略 。。。。 生成器 Generator 函数是 ES6 提供的一种异步编程解决方案, 语法上&#xff0c;首先可以把它理解成&#xff0c;Generator 函数是一个状态机&#xff0c;封装了多个内部状态。执行 Generator 函数…

JVM字节码文件结构

Class文件结构class文件是二进制文件&#xff0c;这里要介绍的是这个二级制文件的结构。思考&#xff1a;一个java文件编译成class文件&#xff0c;如果要描述一个java文件&#xff0c;需要哪些信息呢&#xff1f;基本信息&#xff1a;类名、父类、实现哪些接口、方法个数、每个…

11.web api 2

5. 操作元素属性 5.1操作元素常用属性 &#xff1a;通过 JS 设置/修改标签元素属性&#xff0c;比如通过 src更换 图片最常见的属性比如&#xff1a; href、title、src 等5.2 操作元素样式属性 &#xff1a;通过 JS 设置/修改标签元素的样式属性。使用 className 有什么好处&a…

java中数组和list的区别是什么?

在Java中&#xff0c;数组&#xff08;Array&#xff09;和List&#xff08;通常指java.util.List接口的实现类&#xff0c;如ArrayList、LinkedList&#xff09;是两种常用的容器&#xff0c;但它们在设计、功能和使用场景上有显著区别。以下从核心特性、使用方式等方面详细对…

Python爬取推特(X)的各种数据

&#x1f31f; Hello&#xff0c;我是蒋星熠Jaxonic&#xff01; &#x1f308; 在浩瀚无垠的技术宇宙中&#xff0c;我是一名执着的星际旅人&#xff0c;用代码绘制探索的轨迹。 &#x1f680; 每一个算法都是我点燃的推进器&#xff0c;每一行代码都是我航行的星图。 &#x…

Oracle数据库文件管理与空间问题解决指南

在Oracle数据库运维中&#xff0c;表空间、数据文件及相关日志文件的管理是保障数据库稳定运行的核心环节。本文将系统梳理表空间与数据文件的调整、关键文件的移动、自动扩展配置&#xff0c;以及常见空间不足错误的排查解决方法&#xff0c;为数据库管理员提供全面参考。 一、…

华为实验综合小练习

描述&#xff1a; 1 内网有A、B、C 三个部门。所在网段如图所示。 2 内网服务器配置静态IP,网关192.168.100.1。 3 sw1和R1之间使用vlan200 192.168.200.0/30 互联。 4 R1向运营商申请企业宽带并申请了5个公网IP&#xff1a;200.1.1.1-.5子网掩码 255.255.255.248&#xff0c;网…

Flink面试题及详细答案100道(1-20)- 基础概念与架构

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

爬虫逆向之滑块验证码加密分析(轨迹和坐标)

本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的。否则由此产生的一切后果均与作者无关&#xff01;在爬虫开发过程中&#xff0c;滑块验证码常常成为我们获取数据的一大阻碍。而滑块验证码的加密方式多种多样&#xff0c;其中轨迹加密和坐标加密是比较常见的…

微信小程序实现导航至目的地

本人做的导航页面相关功能和效果的代码 javascript相关 Page({data: {markers: [],latitude: , // 中心点坐标longitude: ,FIXED_LAT: 31.2304, // 1. 写死的目标点坐标, 示例&#xff1a;上海人民广场FIXED_LNG: 121.4737},onLoad: function () {// 如果要显示地图可以看onLo…

中国科学社简史

中国科学社简史中国科学社&#xff0c;作为中国近代史上第一个民间综合性科学团体&#xff0c;为中国现代科学文化事业的发展做出了卓越贡献。其历程不仅见证了中国科学从萌芽到蓬勃发展的转变&#xff0c;还反映了中国科学体制化的艰难探索与辉煌成就。中国科学社的起源可追溯…

若尔当型,Jordon Form

文章目录一、相似二、若尔当型1.1 认识若尔当型1.2 凯莱-哈密顿定理 (Cayley-Hamilton Theorem)一、相似 Every matrix CB−1ABC B^{-1}ABCB−1AB has the same eigenvalues as A. These C’s are similar to A. 任意一个矩阵C&#xff0c;满足 CB−1ABC B^{-1}ABCB−1AB 都和…

解决uni-app微信小程序编译报错:unexpected character `1`

问题原因在uni-app微信小程序开发中&#xff0c;当template模板中包含英文符号<或>时&#xff0c;微信小程序的编译器会将这些符号误认为是HTML标签的开闭符号&#xff0c;从而导致类似unexpected character 1的编译错误。错误示例<view class"plan-bmi">…

[Linux] RAID存储技术

目录 RAID实现方式 RAID 0 RAID 1 RAID 5 RAID 10 管理RAID0 创建RAID 查看RAID 格式化和挂载 删除RAID 管理RAID1 创建RAID 查看RAID 格式化和挂载 增加热备盘 模拟故障 删除故障磁盘 删除RAID 管理RAID5 创建RAID 查看RAID md5设备划分分区 RAID实现方…

程序设计|C语言教学——C语言基础4:进阶

一、预处理指令预处理指令在编译前执行&#xff0c;除了#include&#xff0c;还有以下常用指令&#xff1a;1. #define 宏定义无参宏&#xff1a;定义常量或代码片段&#xff0c;编译时直接替换&#xff08;无类型检查&#xff09;。#define PI 3.1415926 // 定义常量 #define…

数据结构之heap算法

文章目录前言1. heap结构概述2. push_heap3. pop_heap4. sort_heap5. make_heap前言 heap这种数据结构&#xff0c;允许用户以任何次序将任何数据放入该结构中&#xff0c;但是最后取出数据的时候一定是权值最高&#xff08;或者最低&#xff09;的元素。主要和实现有关&#x…

MCU 软件断点调试注意事项!!!

——为什么调试器会在运行中改我的Flash程序&#xff1f;调试单片机时&#xff0c;很多人都有这样的疑问&#xff1a;明明我在调试前刷进去的固件是好的&#xff0c;为什么加了一个断点之后&#xff0c;调试器居然去改了 Flash&#xff1f; 如果我拔掉调试器&#xff0c;这个固…

启发式合并 + 莫队 恋恋的心跳大冒险

题目来源&#xff1a;2025 Wuhan University of Technology Programming Contest 比赛链接&#xff1a;Dashboard - 2025 Wuhan University of Technology Programming Contest - Codeforces 题目大意&#xff1a; Solution&#xff1a; 首先肯定要预处理出以每个节点为起点…

JCTools 无锁并发队列基础:ConcurrentCircularArrayQueue

ConcurrentCircularArrayQueue ConcurrentCircularArrayQueue 是一个抽象类&#xff0c;它为基于数组的并发循环队列提供了基础功能。从其命名可以看出几个关键特性&#xff1a;​​Concurrent​​&#xff1a;常指无锁并发。​​Circular Array​​&#xff1a;内部使用循环数…