一、引入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的更多相关文章

  1. 普通 Java 项目转换为 Maven 项目

    普通 Java 项目转换为 Maven 项目 本文为原创文章,转载请注明出处.源码已分享至GitHub. 本文提供一个完整可行的将遗留项目转换为Maven项目的步骤.至于转换Maven构建项目的好处不 ...

  2. 一般项目转为Maven项目所遇到的问题

    最近搞CI,准备使用Maven,但以前的项目不是Maven项目,需要把项目转换为Maven项目.这遇到几个小问题,一是jar包的依赖,二是从本地仓库取出依赖jar包. 由于没有本地仓库,要手动添加ja ...

  3. 普通项目转为maven项目及相关操作说明

    普通项目转为maven项目及相关操作说明 1 原项目简述 如图,一般的项目大致包括三类路径:src,源码路径:test,单元测试路径:lib第三方类包路径. 示例项目中,BaseDao类依赖于mysq ...

  4. 如何用Eclipse将普通的JavaWeb项目转为Maven项目

    最新自己的第一个项目差不多稳定运行之后 想着将项目转为Maven项目.于是参考网上成功的将自己的普通的项目转为了maven项目,现在记录一下: 0.普通的java项目的结构如下: 1.接下来开始进行正 ...

  5. Eclipse使用之将Git项目转为Maven项目, ( 注意: 最后没有pom.xml文件的, 要转化下 )

    Eclipse使用之将Git项目转为Maven项目(全图解) 2017年08月11日 09:24:31 阅读数:427 1.打开Eclipse,File->Import 2.Git->Pr ...

  6. 在MyEclipse里连接Tomcat部署到项目(maven项目和web项目都适用)

    前提, Tomcat *的下载(绿色版和安装版都适用) Tomcat *的安装和运行(绿色版和安装版都适用) Tomcat的配置文件详解 在Eclipse里连接Tomcat部署到项目(maven项目和 ...

  7. node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)

    最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...

  8. 基于SpringBoot构建分模块项目

    前言 步骤过于详细,多图慎入!!! 假设一个场景,要开发一个4s店维修部的办公系统,其功能有:前台接待,维修抢单,财务结算,库存管理.于是我们创建一个项目balabalabala写完交工. 一段时间后 ...

  9. 基于SpringBoot的WEB API项目的安全设计

    SpringBoot的开箱即用功能,大大降低了上手一个WEB应用的门槛,友好的REST接口支持,在SpringCloud微服务体系中可编程性大大提高,本篇基于一个面向企业调用方用户的WEB API项目 ...

随机推荐

  1. 小迪安全 Web安全 基础入门 第六天 - 信息打点-Web架构篇&域名&语言&中间件&数据库&系统&源码获取

    一 . Web架构 语言.常用的Web开发语言有PHP,Java,Python,JavaScript,.net等.具体可参考w3school的介绍. 中间件. (1)常见的Web服务器中间件:IIS. ...

  2. 12 - Vue3 UI Framework - 打包发布

    基础组件库先做到这个阶段,后面我会继续新增.完善 接下来,我们对之前做的组件进行打包发布到 npm 返回阅读列表点击 这里 组件库优化 通用层叠样式表 我想大家都注意到了,前面我们在写组件的时候,sc ...

  3. redis hash操作 list列表操作

    HSET key 子key 子value 192.168.11.5:6379> HSET stu1 name 'zhangmingda'(integer) 1192.168.11.5:6379& ...

  4. c++参数入栈顺序和参数计算顺序

    关于 本文涉及到代码,演示环境为:win10 + VS2017 ,ubuntu+clang clang版本: 参数入栈顺序 顺序 几种常见的函数参数入栈顺序,还有两种就不介绍了(__clrcall._ ...

  5. 【九度OJ】题目1018:统计同成绩学生人数 解题报告

    [九度OJ]题目1018:统计同成绩学生人数 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1018 题目描述: ...

  6. 【LeetCode】51. N-Queens 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 回溯法 日期 题目地址:https://leetco ...

  7. Counting Offspring(hdu3887)

    Counting Offspring Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  8. 最大流问题的Ford-Fulkerson模板

    详细讲解:http://blog.csdn.net/smartxxyx/article/details/9293665 下面贴上我的第一道最大流的题: hdu3549 1 #include<st ...

  9. 1170 - Counting Perfect BST

    1170 - Counting Perfect BST   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 3 ...

  10. 预训练模型时代:告别finetune, 拥抱adapter

    NLP论文解读 原创•作者 |FLIPPED 研究背景 随着计算算力的不断增加,以transformer为主要架构的预训练模型进入了百花齐放的时代.BERT.RoBERTa等模型的提出为NLP相关问题 ...