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项目 ...
随机推荐
- 删除列Table.RemoveColumns(Power Query 之 M 语言)
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...
- HTML5 head标签meta标签、title的功能
<!DOCTYPE html> <!-- 解释器--> <html lang="en"> <head> <!--meta标签中 ...
- HttpServletResponse工具类和HttpServletRequest工具类,前台参数接收方式和后台返回(JSON)数据格式
RequestUtils.java 操作类 package cn.utils; import org.apache.commons.lang3.StringUtils; import org.slf4 ...
- UiPath RPA培训2021.4版本解读 (2021年5月)-RPA学习天地
2021年5月26日Ui Path发布了新产品2021.4版本,我们来看看有什么新功能: 说明一下uipath的版本发布节奏: uipath的版本一般是每年发布2个版本,其中5月份发布的一般是FTS版 ...
- C++实现二叉搜索书(参考算法导论)
1 #include <iostream> 2 using namespace std; 3 4 struct node 5 { 6 // 数据域 7 int data; 8 9 // 左 ...
- 【LeetCode】259. 3Sum Smaller 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 二分查找 双指针 日期 题目地址:https://le ...
- 【LeetCode】5083. Occurrences After Bigram 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字符串分割遍历 日期 题目地址:https://le ...
- Interviewe(hdu3486)
Interviewe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- codeforce 597C-Subsequences(dp+树状数组)
题目和南阳那道题一样链接http://www.cnblogs.com/zzuli2sjy/p/4943774.html 代码: 1 #include<stdio.h> 2 #include ...
- 【C\C++笔记】数组指针越界
指针越界,t的数组指针越界,修改了c的内容. 使用指针时,必须规定指针移动的范围 #include <iostream> using namespace std; int main(){ ...
