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项目 ...
随机推荐
- 禁用copy on write实现全局EAT HOOK
以前写过一个,但是一不小心删除了,哎,就当再次复习复习吧. 首先抛出一个有意思的问题: 已知所有Windows可执行文件exe都会链接子系统ntdll.dll,那么真实内存中有几份ntdll.dll? ...
- Table.Sort排序…Sort(Power Query 之 M 语言)
数据源: 任意查询表 目标: 对其中一列数据进行排序 操作过程: 选取对象>[主页]>[排序]>[升序排序] 选取对象>[主页]>[排序]>[降序排序] M公式: ...
- PowerDotNet平台化软件架构设计与实现系列(07):数据同步平台
上文介绍定时任务调度平台的时候提到,定时任务调度平台的类模式一般用于处理耗时较长的任务.但是根据经验,有些耗时较长的任务,可以通过简化业务逻辑.分页.批量多次处理,改造为耗时较小的适合使用RESTfu ...
- Sentinel-Go 源码系列(三)滑动时间窗口算法的工程实现
要说现在工程师最重要的能力,我觉得工程能力要排第一. 就算现在大厂面试经常要手撕算法,也是更偏向考查代码工程实现的能力,之前在群里看到这样的图片,就觉得很离谱. 算法与工程实现 在 Sentinel- ...
- ICCV2021 | Tokens-to-Token ViT:在ImageNet上从零训练Vision Transformer
前言 本文介绍一种新的tokens-to-token Vision Transformer(T2T-ViT),T2T-ViT将原始ViT的参数数量和MAC减少了一半,同时在ImageNet上从 ...
- java 图形化小工具Abstract Window Toolit 画笔 处理位图
具体编程来处理位图 知识点: 实现逻辑: 画板上的图片 new BufferedImage(canvasWidth,canvasHeight,BufferedImage.TYPE_INT_BGR); ...
- SpringBoot 整合es(elasticsearch)使用elasticsearch-rest-high-level-client实现增删改
引入依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok< ...
- 【LeetCode】455. Assign Cookies 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 Java解法 Python解法 日期 [LeetCo ...
- 【九度OJ】题目1438:最小公倍数 解题报告
[九度OJ]题目1438:最小公倍数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1438 题目描述: 给定两个正整数,计 ...
- 【LeetCode】289. Game of Life 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
