MongoDB_java连接MongoDB
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的更多相关文章
- nodejs连接mongodb的方法
一. var express = require('express'); var mongodb = require('mongodb'); var app = express(); app.use( ...
- Nodejs开发(2.连接MongoDB)
一.先配置MongoDB Win10下下载那个安装版,zip版的会报却各种DLL,安装在你希望的路径,实在安装错了,就剪切过来也行(本例E:\mongodb). 然后是配置启动脚本,就是写一个bat文 ...
- 在express中使用Mongoose连接MongoDB
为何要学Mongoose? Mongoose是MongoDB的一个对象模型工具,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单. 0.安装 ...
- java连接mongodb的一个奇葩问题及奇葩解决方式
昨天在eclipse中编写代码,本来连接mongodb进行各项操作都是正常的,但是有一会儿突然之间就没法连接了,还一直抱错,错误如下: 信息: Cluster created with setting ...
- Java 连接MongoDB
1.驱动 通过java连接MongoDB需要一个java版的驱动 下载地址:http://mongodb.github.io/mongo-java-driver/ 2.连接MongoDB 通过 com ...
- 远程连接mongodb出现 no route to host 和 Connection refused
部署好mongodb服务器后,在客户端安装好php的mongodb扩展,用程序连接mongodb服务器出错:no route to host.搜索了差不多一天的时候都没有相关的解决方法.最后在mong ...
- NOSQL Mongo入门学习笔记 - C++连接Mongodb(三)
OS环境: Centos 7.1 release X86_64 编译环境: G++ 4.8.3 已经成功搭建好了Mongodb,也初步在命令行中的查询与写入数据的基本方法,现在通过C++来连接Mong ...
- 【mongodb 学习一】环境搭建之 mac 下连接 mongodb 的UI 客户端
记录下 mongodb 的学习 懒得自己达 mongodb 的服务器了 虽然一句命令就能搞定了 brew install mongodb 可是考虑到以后的应用还是放在网上的,就直接用现成的服务吧 下载 ...
- NodeJS连接MongoDB数据库时报错
今天第一次尝试连接MongoDB数据库,具体步骤也很简单. 首先,通过NodeJS运行环境安装MongoDB包,进入要安装的目录,执行语句 npm install mongodb 安装成功后,通过如下 ...
随机推荐
- 使用memcached缓存 替代solr中的LRUCache缓存
前沿 在搜索引擎中,缓存被当做是不可缺少的部分,但是很多情况下,将缓存的实现过度依赖于分发服务器及webserver会很大程度上加重webserver 的负担,具体表现就是经常性的假死,拒绝服务,因此 ...
- idea报错:The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configu
java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more tha ...
- Python基础篇 -- 字典
字典 dict. 以 {} 表示, 每一项用逗号隔开, 内部元素用 key: value的形式来保存数据 例子: dict.{"JJ":"林俊杰"," ...
- ios UITableViewCell重用问题
在写sina 微博界面的过程中使用到了cell,那么就是在cell上添加一些控件,但是由于每条微博的内容都是不同的,所以在显示的过程中,出现了内容重叠的问题,其实就是UITableViewCell重用 ...
- 【计数】51nod1677 treecnt
要将答案看做是小问题的贡献和 Description 给定一棵n个节点的树,从1到n标号.选择k个点,你需要选择一些边使得这k个点通过选择的边联通,目标是使得选择的边数最少. 现需要计算对于所有选择k ...
- Zookeeper 集群 BindException: Cannot assign requested address 解决方案
前言 经历: 最近在搭建zookeeper集群,基础是3台机器(尝试过ubuntu 17 和 Centos 7). 一开始选择的是3台腾讯云服务器,每台机器在java环境配置正确的情况下,单机的情况都 ...
- Elementary OS上eclipse卡死问题
解决: 1.可以用 sudo ./eclipse -vm /home/username/jdk_path/bin/java 启动但是启动后仍有显示问题. 2. 修改 eclipse.ini 在 -- ...
- 虚拟dom和diff算法
https://github.com/livoras/blog/issues/13 这里简单记录一些要点和理解: 一个dom元素中有许多属性,操作dom是很耗资源的,而操作自定义的js对象是很高效.所 ...
- perl学习之六:变量作用域
变量作用域 (一)包变量 $x = 1 这里,$x是个包变量.关于包变量,有2件重要的事情要了解: 1)假如没有其他申明,变量就是包变量:2)包变量总是全局的. 全局意味着包变量在每个程序里总可访问到 ...
- 简单几点让你快速了解python是什么
1.python是什么 python是一种广泛使用的高级编程语言,属于通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年.可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LIS ...