java(基于springboot项目或maven项目均可) 操作mongodb
一、引入mongodb 坐标依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.2</version>
</dependency>
二、创建mongodb 配置文件 mongodb.properties
添加如下内容
mymongodb.host= 10.0.0.2
mymongodb.port= 27017
mymongodb.dbname= articledb
三、创建mongodb 工具类
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component; /**
* @Description: [mongodb工具类]
* @Author: Jingqi Qu
* @CreateDate: 2021/12/21 17:17
* @UpdateUser:
* @UpdateDate:
* @Version: [v1.0]
*/
@Configuration
@ConfigurationProperties(prefix = "mymongodb", ignoreUnknownFields = false)
@PropertySource("classpath:config/mongodb.properties")
@Data
@Component
public class MongoDBUtil { private String host;
private int port;
private String dbname;
private static MongoDatabase mongoDatabase; public MongoClient getMongoClient(){//创建方法不同版本依赖可能不同,查看源码即可 此处使用 host +默认端口号创建
//创建client
MongoClient mongoClient = new MongoClient(host);
return mongoClient; }
public MongoDatabase getMongoDatabase(){
MongoClient mongoClient = getMongoClient();
mongoDatabase = mongoClient.getDatabase(dbname);
return mongoDatabase; } // 使用Grid 链接指定数据库
public GridFSBucket getGrid(){
MongoClient mongoClient = getMongoClient();
MongoDatabase mongoDatabase = mongoClient.getDatabase(dbname);
GridFSBucket gridFSBucket = GridFSBuckets.create(mongoDatabase);
return gridFSBucket; } }
四、使用mongodbapi操作mongodb数据库
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSUploadStream;
import com.mongodb.client.gridfs.model.GridFSUploadOptions;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.bson.types.ObjectId;
import org.junit.Test; import javax.servlet.http.HttpServletResponse; import java.io.*;
import java.util.HashMap;
import java.util.Map; /**
* @Description: [一句话描述该类的功能]
* @Author: Jingqi Qu
* @CreateDate: 2021/12/21 17:43
* @UpdateUser:
* @UpdateDate:
* @Version: [v1.0]
*/ public class TestMongo { // 查看mongodb所有数据库
@Test
public void getAllDB(){
MongoClient mongoClient = MongoDBUtil.getMongoClient();
MongoIterable<String> mongoIterable = mongoClient.listDatabaseNames();
for(String db:mongoIterable){
System.out.println(db);
}
} // 查看指定数据库下的所有集合
@Test
public void getCollections(){
MongoDatabase db = MongoDBUtil.getMongoDatabase();
MongoIterable<String> nameList = db.listCollectionNames();
for(String collectionsName :nameList){
System.out.println(collectionsName);
}
} // 创建集合
@Test
public void createCollections(){
MongoDatabase db = MongoDBUtil.getMongoDatabase();
db.createCollection("threeCollection"); }
// 删除集合
@Test
public void removeCollections(){
MongoDatabase db = MongoDBUtil.getMongoDatabase();
MongoCollection<Document> collection = db.getCollection("threeCollection");
collection.drop(); } // 根据集合名获取所有文档
@Test
public void findDocumentByCollectionName(){
MongoDatabase db = MongoDBUtil.getMongoDatabase();
MongoCollection<Document> collection = db.getCollection("threeCollection");
FindIterable<Document> doc = collection.find();
for(Document document :doc){
System.out.println(document);
} }
// 插入文档
@Test
public void insertDocumentByCollectionName(){
MongoDatabase db = MongoDBUtil.getMongoDatabase();
MongoCollection<Document> collection = db.getCollection("threeCollection");
Document doc = new Document();
Map<String,String> map = new HashMap<String, String>();
map.put("class","222");
//默认是个ObjectId对象,此处设置为string,否则无法更新
doc.append("_id","44444");
doc.append("name","tom3");
doc.append("age","68");
collection.insertOne(doc); }
// 更新文档
@Test
public void updateDocumentByCollectionName(){
MongoDatabase db = MongoDBUtil.getMongoDatabase();
MongoCollection<Document> collection = db.getCollection("threeCollection");
Document doc = new Document("class","888");
UpdateResult a = collection.updateOne(Filters.eq("class","222"),new Document("$set",doc));
System.out.println(a); } // 删除文档
@Test
public void removeDocumentByCollectionName(){
MongoDatabase db = MongoDBUtil.getMongoDatabase();
MongoCollection<Document> collection = db.getCollection("threeCollection");
DeleteResult res = collection.deleteOne(Filters.eq("_id","61c2c911136fb13d507f5b4f"));
System.out.println(res); } // MongoDB GridFS 存图片
@Test
public void test(){
GridFSBucket grid = MongoDBUtil.getGrid();
GridFSUploadOptions options = new GridFSUploadOptions();
options.chunkSizeBytes(358400);//定义chunk大小
GridFSUploadStream stream = grid.openUploadStream("test.png",options); //创建上传流
InputStream in = null;
try{
File file = new File("F:\\项目资料\\图片\\banner1.png"); in = new FileInputStream(file);
int tempbyte; while ((tempbyte = in.read()) != -1) {
stream.write(tempbyte);
}
in.close(); stream.close();
System.out.println("文件id:"+stream.getFileId());
}catch (IOException e){
e.printStackTrace();
} } // MongoDB GridFS 跟据文档id取图片
@Test
public void test2(HttpServletResponse resp){
GridFSBucket grid = MongoDBUtil.getGrid();
GridFSUploadOptions options = new GridFSUploadOptions();
try{
OutputStream out = resp.getOutputStream();
grid.downloadToStream(new ObjectId("61c305e0136fb133fcf3f247"),out); }catch (IOException e){ } }
}
五、推荐使用图形化工具 Robo 3T
下载地址 https://robomongo.org/download/
一键安装非常方便这里不赘述
操作界面如下:
java(基于springboot项目或maven项目均可) 操作mongodb的更多相关文章
- 普通 Java 项目转换为 Maven 项目
普通 Java 项目转换为 Maven 项目 本文为原创文章,转载请注明出处.源码已分享至GitHub. 本文提供一个完整可行的将遗留项目转换为Maven项目的步骤.至于转换Maven构建项目的好处不 ...
- 一般项目转为Maven项目所遇到的问题
最近搞CI,准备使用Maven,但以前的项目不是Maven项目,需要把项目转换为Maven项目.这遇到几个小问题,一是jar包的依赖,二是从本地仓库取出依赖jar包. 由于没有本地仓库,要手动添加ja ...
- 普通项目转为maven项目及相关操作说明
普通项目转为maven项目及相关操作说明 1 原项目简述 如图,一般的项目大致包括三类路径:src,源码路径:test,单元测试路径:lib第三方类包路径. 示例项目中,BaseDao类依赖于mysq ...
- 如何用Eclipse将普通的JavaWeb项目转为Maven项目
最新自己的第一个项目差不多稳定运行之后 想着将项目转为Maven项目.于是参考网上成功的将自己的普通的项目转为了maven项目,现在记录一下: 0.普通的java项目的结构如下: 1.接下来开始进行正 ...
- Eclipse使用之将Git项目转为Maven项目, ( 注意: 最后没有pom.xml文件的, 要转化下 )
Eclipse使用之将Git项目转为Maven项目(全图解) 2017年08月11日 09:24:31 阅读数:427 1.打开Eclipse,File->Import 2.Git->Pr ...
- 在MyEclipse里连接Tomcat部署到项目(maven项目和web项目都适用)
前提, Tomcat *的下载(绿色版和安装版都适用) Tomcat *的安装和运行(绿色版和安装版都适用) Tomcat的配置文件详解 在Eclipse里连接Tomcat部署到项目(maven项目和 ...
- node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)
最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...
- 基于SpringBoot构建分模块项目
前言 步骤过于详细,多图慎入!!! 假设一个场景,要开发一个4s店维修部的办公系统,其功能有:前台接待,维修抢单,财务结算,库存管理.于是我们创建一个项目balabalabala写完交工. 一段时间后 ...
- 基于SpringBoot的WEB API项目的安全设计
SpringBoot的开箱即用功能,大大降低了上手一个WEB应用的门槛,友好的REST接口支持,在SpringCloud微服务体系中可编程性大大提高,本篇基于一个面向企业调用方用户的WEB API项目 ...
随机推荐
- MySQL 创建定时任务 详解
自 MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务,来取代原先只能由操作系统的计划任务来执行的工作.事件调度器有时也可称 ...
- 尚硅谷SSM-CRUD实战Demo
SSM-CRUD实战项目 1. 项目总览 SpringMVC + Spring + MyBatis CRUD:增删改查 功能: 分页 数据校验 jquery前端校验+JSR303后端校验 ajax R ...
- XMLHttpRequest() 如何预检查CORS跨域请求的?
https://blog.csdn.net/qq_38261174/article/details/90691058
- Flink使用IDEA进行jar打包
pom文件增加 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mav ...
- 【九度OJ】题目1169:比较奇偶数个数 解题报告
[九度OJ]题目1169:比较奇偶数个数 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1169 题目描述: 第一行输入一个数,为n, ...
- 【LeetCode】769. Max Chunks To Make Sorted 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- CS起源-havana地图红方打法分析
作者:海底淤泥 havana是美国第一人称射击游戏<反恐精英>中的地图之一,编号为cs_havana,这张地图发生在古巴哈瓦那的某座城市中,恐怖分子们挟持了几名美裔的重要政治人物,以此为筹 ...
- RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)
本来今天是想做RabbitMQ之优先级队列的,但是,在RabbitMQ Server创建queue时,增加优先级的最大值,头脑发热写了9999999,导致电脑内存直接飙到100%,只能重启电脑,并卸载 ...
- SRGAN
目录 概 主要内容 代码 Ledig C., Theis L., Huszar F., Caballero J., Cunningham A., Acosta A., Aitken A., Tejan ...
- ZooKeeper基础知识总结
数据模型 ZooKeeper数据模型是一个树状的数据结构,类似于文件系统:和文件系统的区别在于树中的每一个节点(叶子节点与非叶子节点)都可以保存数据,且每个节点的访问都必须从根节点开始,以斜线作为分隔 ...