MongoClient 操作MongoDB replica-set

2023-11-27 01:48

本文主要是介绍MongoClient 操作MongoDB replica-set,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于MongoDB的Java驱动, 从2.10.0版本后,文档中提醒Mongo类将会被废除,现在开始都鼓励使用MongoClient类。

下面演示一个Java程序如何使用最新的MongoClient类来对MongoDB写操作。

首先假定已经有了一个Replica-set集群,分别是d1, d2和 d3三台虚拟机。

然后创建一个Maven构建的Java应用程序。使用了maven exec plugin用来方便执行jar包和定制参数。

看一下pom.xml:

  <build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>exec-maven-plugin</artifactId><version>1.2.1</version><executions><execution><goals><goal>java</goal></goals></execution></executions><configuration><mainClass>org.freebird.dbtool.App</mainClass><arguments><argument>d1,d2,d3</argument></arguments></configuration></plugin></plugins></build>

传递了三个参数,中间用,隔开,分别是不同的主机名称:d1, d2, d3.

看看代码初始化部分:

    public static void main(String[] args) throws UnknownHostException {System.out.println(args[0]);String[] hosts = args[0].split(",");int portNumber = 27017;System.out.println(hosts[0]);System.out.println(hosts[1]);System.out.println(hosts[2]);MongoClient client = new MongoClient(Arrays.asList(new ServerAddress(hosts[0], portNumber),new ServerAddress(hosts[1], portNumber),new ServerAddress(hosts[2], portNumber)));MyApp.getInstance().setDbName("kaimei");MyApp.getInstance().setClient(client);

这里将三个host用,分割开后,创建三个ServerAddress对象,然后构建MongoClient对象。

同时创建了一个MyApp的singleton对象,存放这个MongoClient对象,并提供了getDB()方便日后获取数据库连接。

public class MyApp {private MyApp() {}public static MyApp getInstance() {return MyAppHolder.INSTANCE;}private static class MyAppHolder {private static final MyApp INSTANCE = new MyApp();}@Getter @SetterString dbName;@SetterMongoClient client;public DB getDB() {return client.getDB(dbName);}
}

以后在任何地方需要使用连接的时候,这样使用:

    public static void bind(final String address, final String userId) {DB db = MyApp.getInstance().getDB();DBCollection collection = db.getCollection(DISPLAY_COLLECTION);DBObject condition = new BasicDBObject();condition.put("address", address);DBObject field = new BasicDBObject();field.put("user_id", new ObjectId(userId));DBObject set = new BasicDBObject();set.put("$set", field);collection.update(condition, set, false, false);}

很简单吧。

这篇关于MongoClient 操作MongoDB replica-set的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426744

相关文章

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

使用Python在PDF中绘制多种图形的操作示例

《使用Python在PDF中绘制多种图形的操作示例》在进行PDF自动化处理时,人们往往首先想到的是文本生成、图片嵌入或表格绘制等常规需求,然而在许多实际业务场景中,能够在PDF中灵活绘制图形同样至关重... 目录1. 环境准备2. 创建 PDF 文档与页面3. 在 PDF 中绘制不同类型的图形python

Java 操作 MinIO详细步骤

《Java操作MinIO详细步骤》本文详细介绍了如何使用Java操作MinIO,涵盖了从环境准备、核心API详解到实战场景的全过程,文章从基础的桶和对象操作开始,到大文件分片上传、预签名URL生成... 目录Java 操作 MinIO 全指南:从 API 详解到实战场景引言:为什么选择 MinIO?一、环境

在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)

《在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)》DataGrip是JetBrains公司出品的一款现代化数据库管理工具,支持多种数据库系统,包括MySQL,:本文主要介绍在D... 目录前言一、登录 mysql 服务器1.1 打开 DataGrip 并添加数据源1.2 配置 MySQL

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql

Python操作Excel的实用工具与库openpyxl/pandas的详细指南

《Python操作Excel的实用工具与库openpyxl/pandas的详细指南》在日常数据处理工作中,Excel是最常见的数据文件格式之一,本文将带你了解openpyxl和pandas的核心用法,... 目录一、openpyxl:原生 Excel 文件操作库1. 安装 openpyxl2. 创建 Exc