java程序连接单机版的mongodb:

参考:http://www.runoob.com/mongodb/mongodb-java.html

https://www.yiibai.com/mongodb/mongodb_java.html

Mongodb JDBC驱动程序,下载地址:http://mongodb.github.io/mongo-java-driver/

需要引用的jar包为:mongo-java-driver-3.9.1.jar

需要注意的是,需要将安装的单机的mongodb的配置中bind_ip=0.0.0.0 否则会连接不上,参考https://www.cnblogs.com/lindsay-chh/p/4734568.html

测试代码:

    public static void main(String[] args) {
try {
@SuppressWarnings("resource")
MongoClient mongoClient=new MongoClient("10.3.13.213" ,27017);
MongoDatabase mongoDatabase=mongoClient.getDatabase("yldb");
mongoDatabase.createCollection("yyCollection");
MongoCollection<Document> collection=mongoDatabase.getCollection("yyCollection");
Document document=new Document("title","111").append("ttt", 111).append("eee", 111222);
collection.insertOne(document);
} catch (Exception e) {
// TODO: handle exception
}

 java连接副本集模式下的MongoDB

在搭建的mongodb环境中,即使有一个节点挂了,也不会影响应用程序客户端对整个副本集的读写。

package test_mongodb;
import java.util.ArrayList;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class test2 {
public static void main(String[] args) {
java.util.List<ServerAddress> serverAddresses=new ArrayList<>();
ServerAddress address1=new ServerAddress("10.3.13.213",27017);
ServerAddress address2=new ServerAddress("10.3.2.33",27017);
ServerAddress address3=new ServerAddress("10.3.2.34",27017);
serverAddresses.add(address1);
serverAddresses.add(address2);
serverAddresses.add(address3);
MongoClient client=new MongoClient(serverAddresses);
try {
//连接数据库test
MongoDatabase mongoDatabase=client.getDatabase("test");
//连接集合testcc
MongoCollection<Document> collection=mongoDatabase.getCollection("testcc");
FindIterable<Document> docs=collection.find();
//将集合中的文档内容转换成字符串打印出来
for(Document document:docs){
String string=document.toString();
System.out.println(string);
}
} catch (Exception e) {
System.out.println(e);
}
client.close();
}
}

按上面对的部署与连接下,其实所有的读写操作都是在主节点上进行的。

读写分离:

可以设置只在副本节点上进行读,来减轻主节点的读写压力

首先需要设置副本节点的可读(默认副本节点是不可读写的) repset:SECONDARY> db.getMongo().setSlaveOK()

如下:在获取集合时设置

            //连接集合testcc
ReadPreference readPreference=ReadPreference.secondary();
MongoCollection<Document> collection=mongoDatabase.getCollection("testcc").withReadPreference(readPreference);

也可以在连接数据库时设置,方法相类似

其中:ReadPreference的选项可以选择

primary:默认参数,只从主节点上进行读取操作;

primaryPreferred:大部分从主节点上读取数据,只有主节点不可用时从secondary节点读取数据。

secondary:只从secondary节点上进行读取操作,存在的问题是secondary节点的数据会比primary节点数据“旧”。

secondaryPreferred:优先从secondary节点进行读取操作,secondary节点不可用时从主节点读取数据;

nearest:不管是主节点、secondary节点,从网络延迟最低的节点上读取数据。

参考:https://blog.csdn.net/u013066244/article/details/73835967/

https://blog.csdn.net/bao0682/article/details/47104973

MongoDB_java连接MongoDB的更多相关文章

  1. nodejs连接mongodb的方法

    一. var express = require('express'); var mongodb = require('mongodb'); var app = express(); app.use( ...

  2. Nodejs开发(2.连接MongoDB)

    一.先配置MongoDB Win10下下载那个安装版,zip版的会报却各种DLL,安装在你希望的路径,实在安装错了,就剪切过来也行(本例E:\mongodb). 然后是配置启动脚本,就是写一个bat文 ...

  3. 在express中使用Mongoose连接MongoDB

    为何要学Mongoose? Mongoose是MongoDB的一个对象模型工具,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单. 0.安装 ...

  4. java连接mongodb的一个奇葩问题及奇葩解决方式

    昨天在eclipse中编写代码,本来连接mongodb进行各项操作都是正常的,但是有一会儿突然之间就没法连接了,还一直抱错,错误如下: 信息: Cluster created with setting ...

  5. Java 连接MongoDB

    1.驱动 通过java连接MongoDB需要一个java版的驱动 下载地址:http://mongodb.github.io/mongo-java-driver/ 2.连接MongoDB 通过 com ...

  6. 远程连接mongodb出现 no route to host 和 Connection refused

    部署好mongodb服务器后,在客户端安装好php的mongodb扩展,用程序连接mongodb服务器出错:no route to host.搜索了差不多一天的时候都没有相关的解决方法.最后在mong ...

  7. NOSQL Mongo入门学习笔记 - C++连接Mongodb(三)

    OS环境: Centos 7.1 release X86_64 编译环境: G++ 4.8.3 已经成功搭建好了Mongodb,也初步在命令行中的查询与写入数据的基本方法,现在通过C++来连接Mong ...

  8. 【mongodb 学习一】环境搭建之 mac 下连接 mongodb 的UI 客户端

    记录下 mongodb 的学习 懒得自己达 mongodb 的服务器了 虽然一句命令就能搞定了 brew install mongodb 可是考虑到以后的应用还是放在网上的,就直接用现成的服务吧 下载 ...

  9. NodeJS连接MongoDB数据库时报错

    今天第一次尝试连接MongoDB数据库,具体步骤也很简单. 首先,通过NodeJS运行环境安装MongoDB包,进入要安装的目录,执行语句 npm install mongodb 安装成功后,通过如下 ...

随机推荐

  1. 机器学习之-奇异值分解(SVD)原理详解及推导

    转载 http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补充 ...

  2. Django auth权限

    创建超级管理员命令 python manage.py createsuperuser --username hello 检查和校验用户 from django.contrib import auth ...

  3. CAD控件的超链接事件(网页版)

    _DMxDrawXEvents::HyperlinkClick 有超连接的实体被点击了. 参数 说明 IDispatch* pEntity IMxDrawEntity,被点击的实体 DOUBLE dX ...

  4. rpn网络结构再分析

    这是rpn网络train阶段的网络结构图 rpn_conv1之前的网络是特征提取层,也是和fast rcnn共享的层.rpn_conv1是一层1*1的卷积,这一层是单独为rpn网络多提取一层特征,这一 ...

  5. Python字符编码补充

    字符编码: Python字符编码贯穿Python学习的始终,现在应用的是Python2中字符编码的问题是很多的. 这次是要彻底解决Python字符编码的问题!!! 1 字符编码的发展过程: 1 .AS ...

  6. scanf函数详解

    函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]);scanf()函数是通用终端格式化输入函数,它从标准输入设备(键 ...

  7. ios之UIWebView(1)

    UIWebView可以让你创建一个网页浏览器,类似safari,而不是在程序中启动safsri哦.是不是觉得很棒呢?废话少说,切入正题. 一.创建UIWebView [java] view plain ...

  8. jquery如何获取手机网页触屏坐标:ontouchstart 、ontouchend、ontouchmove

    function handleTouchEvent(event) { //只跟踪一次触摸 ) { var output = document.getElementById("output&q ...

  9. [php] 接口及方法和抽象类及方法的异同点

    比较项目 接口 抽象类 方法是否有实体 无 抽象方法无实体,非抽象方法可以有实体 方法开闭性 public public,protected,private 重载方法的开闭性 public 必须与父类 ...

  10. web开发框架之Django基础

    在脚本中如何进行Django的运行 if __name__ == '__main__': import os import django # 注意路径(当前所在的位置,要加载Django的配置文件) ...