MongoDB 应用实战

1. java 原生客户端

引入maven

1 <dependencies>
2 <dependency>
3 <groupId>org.mongodb</groupId>
4 <artifactId>mongodb‐driver‐sync</artifactId>
5 <version>4.1.1</version>
6 </dependency>
7 </dependencies>
1 public class QuickStart {
2
3 public static void main(String[] args) {
4 // 连接本地默认端口的Mongod
5 // MongoClient mongoClient = MongoClients.create()
6 // 连接远程服务的指定端口的Mongod
7 // MongoClient mongoClient = MongoClients.create("mongodb://host1:27017");
8 // 连接指定端口复制集
9 // MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host
2:27017,host3:27017/?replicaSet=myReplicaSet");
10 // 连接 mongos路由: 连接一个
11 // MongoClient mongoClient = MongoClients.create( "mongodb://localhost:27017"
);
12 // 连接多个mongos路由
13 MongoClient mongoClient =
MongoClients.create("mongodb://111.229.189.98:4000");
14
15
16 //获取数据库
17 MongoDatabase database = mongoClient.getDatabase("productdb");
18
19 // 获取集合
20 MongoCollection<Document> productdesc=database.getCollection( "productdesc"
);
21
22 Document doc = new Document("name", "MongoDB")
23 .append("type", "database")
24 .append("count", 1)
25 .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
26 .append("info", new Document("x", 203).append("y", 102));
27
28 productdesc.insertOne(doc);
29
30
31 Bson eq = eq("name", "MongoDB");
32 FindIterable<Document> find = productdesc.find(eq);
33 Document first=find.first();
34 System.out.println(first);
35
36 }
37 }

2. Spring Boot 整合:

1. 引入maven

1 <?xml version="1.0" encoding="UTF‐8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or
g/2001/XMLSchema‐instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.or
g/xsd/maven‐4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <parent>
6 <groupId>org.springframework.boot</groupId>
7 <artifactId>spring‐boot‐starter‐parent</artifactId>
8 <version>2.4.0</version>
9 <relativePath/> <!‐‐ lookup parent from repository ‐‐>
10 </parent>
11 <groupId>com.example</groupId>
12 <artifactId>demo</artifactId>
13 <version>0.0.1‐SNAPSHOT</version>
14 <name>demo</name>
15 <description>Demo project for Spring Boot</description>
16
17 <properties>
18 <java.version>1.8</java.version>
19 </properties>
20
21 <dependencies>
22 <dependency>
23 <groupId>org.springframework.boot</groupId>
24 <artifactId>spring‐boot‐starter‐data‐mongodb</artifactId>
25 </dependency>
26 <dependency>
27 <groupId>org.springframework.boot</groupId>
28 <artifactId>spring‐boot‐starter‐web</artifactId>
29 </dependency>
30
31 <dependency>
32 <groupId>org.springframework.boot</groupId>
33 <artifactId>spring‐boot‐starter‐test</artifactId>
34 <scope>test</scope>
35 </dependency>
36 <dependency>
37 <groupId>org.projectlombok</groupId>
38 <artifactId>lombok</artifactId>
39 <version>1.18.12</version>
40 </dependency>
41
42
43 </dependencies>
44
45 <build>
46 <plugins>
47 <plugin>
48 <groupId>org.springframework.boot</groupId>
49 <artifactId>spring‐boot‐maven‐plugin</artifactId>
50 </plugin>
51 </plugins>
52 </build>
53
54 </project>

2. 添加配置类
比如连接上述的 mongos, 使用MongoTemplate 进行数据库操作

 package com.example.demo.config;
2
3 import com.mongodb.client.MongoClient;
4 import com.mongodb.client.MongoClients;
5 import org.springframework.context.annotation.Bean;
6 import org.springframework.context.annotation.Configuration;
7 import org.springframework.data.mongodb.core.MongoTemplate;
8
9 @Configuration
10 public class AppConfig {
11
12 public @Bean
13 MongoClient mongoClient() {
14 return MongoClients.create("mongodb://111.229.189.98:4000");
15 }
16
17 public @Bean
18 MongoTemplate mongoTemplate() {
19 return new MongoTemplate(mongoClient(), "productdb");
20 }
21 }

3. 测试类

1 package com.example.demo;
2
3 public class Person {
4
5 private String id;
6 private String name;
7 private int age;
8
9 public Person(String name, int age) {
10 this.name = name;
11 this.age = age;
12 }
13
14 public String getId() {
15 return id;
16 }
17 public String getName() {
18 return name;
19 }
20 public int getAge() {
21 return age;
22 }
23
24 @Override
25 public String toString() {
26 return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
27 }
28
29 }
30
31 package com.example.demo;
32
33 import lombok.extern.slf4j.Slf4j;
34 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.boot.ApplicationArguments;
36 import org.springframework.boot.ApplicationRunner;
37 import org.springframework.data.mongodb.core.MongoTemplate;
38 import org.springframework.stereotype.Component;
39
40 import java.util.List;
41
42 import static org.springframework.data.mongodb.core.query.Criteria.where;
43 import static org.springframework.data.mongodb.core.query.Query.query;
44 import static org.springframework.data.mongodb.core.query.Update.update;
45
46 @Component
47 @Slf4j
48 public class ApplicationRunnerTest implements ApplicationRunner{
49
50 @Autowired
51 private MongoTemplate mongoOps;
52
53 @Override
54 public void run(ApplicationArguments applicationArguments) throws Exception {
55
56 Person p = new Person("Joe", 34);
57
58 // 插入文档
59 mongoOps.insert(p);
60 log.info("Insert: " + p);
61
62 // 查询文档
63 p = mongoOps.findById(p.getId(), Person.class);
64 log.info("Found: " + p);
65
66 // 更新文档
67 mongoOps.updateFirst(query(where("name").is("Joe")), update("age", 35), Perso
n.class);
68 p = mongoOps.findOne(query(where("name").is("Joe")), Person.class);
69 log.info("Updated: " + p);
70
71 // 删除文档
72 mongoOps.remove(p);
73
74 // Check that deletion worked
75 List<Person> people = mongoOps.findAll(Person.class);
76 log.info("Number of people = : " + people.size());
77 mongoOps.dropCollection(Person.class);
78 }
79 }
80
81
82
83

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

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

相关文章

linux下tcp/ip网络通信笔记1,

本文章主要为博主在学习网络通信的笔记一个Udp_echo_server,和client的代码实现 1&#xff0c;网络发展&#xff0c;网络协议&#xff0c;意识到网络通信——不同主机的进程间通信&#xff0c; 2&#xff0c;学习如何在应用层调用系统提供的接口进行通信&#xff0c;echo_Udp…

前端二进制数据指南:从 ArrayBuffer 到高级流处理

前端开发中&#xff0c;二进制数据是处理文件、图像、音视频、网络通信等场景的基础。以下是核心概念和用途的通俗解释&#xff1a; 前端二进制数据介绍 1. 什么是前端二进制数据&#xff1f; 指计算机原始的 0 和 1 格式的数据&#xff08;比如一张图片的底层代码&#xff…

Cacti 未经身份验证SQL注入漏洞

0x00 前言 Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。 Cacti是通过 snmpget来获取数据&#xff0c;使用 RRDtool绘画图形&#xff0c;而且你完全可以不需要了解RRDtool复杂的参数。 0x01 漏洞描述 漏洞存在于从graph_view.php文件调用的growt…

使用国内源加速Qt在线安装

简介&#xff1a; 在线安装Qt时&#xff0c;会发现下载非常缓慢&#xff0c;可以用过使用国内镜像源来加速安装过程。 在线安装包的下载过程&#xff1a; 1&#xff0c;打开下载页面 https://www.qt.io/download-open-source 2&#xff0c;点击 Download the Qt online ins…

C#上位机RS485通信控制变频器

C#上位机使用Modbus RTU协议控制变频器 一、RTU报文格式示例 通信命令码&#xff1a; 03H:读从机参数 06H:写从机参数 10H:写多个参数上位机写单个寄存器&#xff1a;【从机地址】1字节【命令码】1字节【寄存器地址高-低】2字节【数据值高-低】2字节【CRC校验值低-高】…

OCC笔记:Brep格式

1. BREP格式简介 BREP格式是Open CASCADE内核&#xff08;OCCT&#xff09;的原生数据模型&#xff0c;直接描述几何体的边界表示&#xff08;面、边、顶点拓扑关系及几何参数&#xff09;。于OCCT内核的算法计算&#xff08;如布尔运算、曲面细分&#xff09;&#xff0c;存储…

Vue3进行工程化项目,保姆级教学(编译软件:vscode)大部分编译平台适用

目录 1. 创建vue工程 1.1 第一步 1.2 选择名称和工件 1.3 选择语言 1.4 自动下载js 1.5 运行vue工程 1.6 成功页面 2. 更改vue工程安装的位置 3. 更改运行工程方式 第一步 第二步 ​编辑 第三步 调试 ​编辑 运行项目 前面所学都是vue3的基础&#xff0c;为了简…

CSS常用选择器

CSS选择器用于选择HTML元素并为其应用样式。以下是CSS中最常用的选择器类型&#xff1a; 基本选择器 1.元素选择器 - 通过HTML标签名选择元素 p { color: blue; } 2.类选择器 - 通过class属性选择元素&#xff08;以.开头&#xff09; .warning { color: red; } 3.ID选择…

EmberGen导出序列图到UE5

选择Render节点 调整节点相关参数 然后选择一个目录 点击导出Export Now即可 材质用FlipBook 如果是特效就SubUV

EXCEL Python 实现绘制柱状线型组合图和树状图(包含数据透视表)

1、组合图、数据透视表 &#xff08;1&#xff09;数据预处理 知识点 日期函数 year() month()数据透视表操作 同比计算公式 环比计算公式 &#xff08;2&#xff09;excel 数据透视表插入组合图 a.2015~2017数据集处理方式&#xff1a; 操作&#xff1a; 结果 b.2020~20…

LabVIEW光谱检测系统

腔衰荡光谱技术&#xff08;CRDS&#xff09;凭借高精度和高灵敏度特性&#xff0c;成为微量气体浓度检测的常用方法&#xff0c;而准确获取衰荡时间是该技术应用的关键。基于LabVIEW平台设计腔衰荡信号在线处理系统&#xff0c;实现对衰荡信号的实时采集、平均、拟合、显示和保…

Flask快速入门和问答项目源码

Flask基础入门 源码&#xff1a; gitee&#xff1a;我爱白米饭/Flask问答项目 - 码云 目录 1.安装环境2.【debug、host、port】3.【路由params和query】4.【模板】5.【静态文件】6.【数据库连接】6.1.安装模块6.2.创建数据库并测试连接6.3.创建数据表6.4.ORM增删改查 6.5.ORM模…

flutter长列表 ListView、GridView、SingleChildScrollView、CustomScrollView区别

组件名称用途/适合场景是否懒加载支持列表结构用法复杂度SingleChildScrollView适用于内容数量不大、不重复的页面&#xff08;如表单、静态内容&#xff09;❌ 否❌ 否⭐⭐ListView适用于垂直方向的长列表&#xff0c;自动滚动&#xff1b;适合展示大量数据✅ 支持✅ 是⭐⭐Li…

鸿蒙OSUniApp 开发的一键分享功能#三方框架 #Uniapp

使用 UniApp 开发的一键分享功能 在移动应用开发中&#xff0c;分享功能几乎是必不可少的一环。一个好的分享体验不仅能带来更多用户&#xff0c;还能提升产品的曝光度。本文将详细讲解如何在 UniApp 框架下实现一个简单高效的一键分享功能&#xff0c;适配多个平台。 各平台分…

Vue-监听属性

监听属性 简单监听 点击切换名字&#xff0c;来回变更Tom/Jerry&#xff0c;输出 你好&#xff0c;Tom/Jerry 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>监听属性</title><!-- …

DeepSeek 赋能物联网:从连接到智能的跨越之路

目录 一、引言&#xff1a;物联网新时代的开启二、DeepSeek 技术揭秘2.1 DeepSeek 是什么2.2 DeepSeek 技术优势 三、DeepSeek 与物联网的融合之基3.1 物联网发展现状与挑战3.2 DeepSeek 带来的变革性突破 四、DeepSeek 在物联网的多元应用场景4.1 智慧电力&#xff1a;开启能源…

3.6/Q1,GBD数据库最新文章解读

文章题目&#xff1a;Global, regional, and national burden of geriatric depressive disorders in people aged 60 years and older: an analysis of the Global Burden of Disease Study 2021 DOI&#xff1a;10.1186/s12991-025-00560-2 中文标题&#xff1a;60 岁及以上人…

LVGL学习笔记

文章目录 一、 LVGL移植教程(GD32)一 并行驱动 LED二三一、 LVGL移植教程(GD32) 参考链接 1.GD32+LVGL移植教程(超详细)——基于GD32F303X系列MCU 一 并行驱动 LED 根据您提供的引脚信号(DCLK、DISP、HSYNC、VSYNC、DE),可以判断这是一款采用 TTL/Parallel RGB 接口…

软件架构之--论微服务的开发方法1

论微服务的开发方法1 摘要 2023年 2月,本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发,该项目旨在为长三角地区渔船建造设计院、以及渔船图纸审查机构提供一个便捷的渔船图纸电子化审查服务平台。在此项目中,我作为项目组成员参与项目的建设工作,并…

如何在终端/命令行中把PDF的每一页转换成图片(PNG)

今天被对象安排了一个任务&#xff1a; 之前自己其实也有这个需要&#xff0c;但是吧&#xff0c;我懒&#xff1a;量少拖拽&#xff0c;量大就放弃。但这次躲不过去了&#xff0c;所以研究了一下有什么工具可以做到这个需求。 本文记录我这次发现的使用 XpdfReader 的方法。…