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 安装成功后,通过如下 ...
随机推荐
- leetcode_1053. Previous Permutation With One Swap
1053. Previous Permutation With One Swap https://leetcode.com/problems/previous-permutation-with-one ...
- Python 解压序列、可迭代对象并赋值给多个变量
Python数据结构和类型 1.1 解压序列赋值给多个变量 现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量? 解决思路:先通过简单的解压赋值给多个变量,前提是变量的数 ...
- java程序-类的高级特性
创建Employee类,在类中定义三个属性:编号,姓名,年龄,然后在构造方法里初始化这三个属性,最后在实现接口中的定义的CompareTo方法,将对象按编号升序排列. 代码如下:(程序可能有些错误,方 ...
- Java形式参数和返回值的问题
形式参数和返回值的问题 (1).形式参数: A.类名:需要该类的对象. B.抽象类名:需要该类的子类对象. C.接口名:需要该接口的实现类对象. A.类名作为形式参数 class Student { ...
- tp5 -- 微信公众号支付
近来期间比较忙, 忙完之后发现最近有挺多的东西没有整理,于是乎.就将以前用到的一些小东西整理了一下. 如果对您有帮助,则是我最大的幸运. 本篇主要是说了一下整合TP5的微信公众号支付. 不过由于最近T ...
- Bootstrap 网格系统(Grid System)
Bootstrap 网格系统(Grid System) Bootstrap提供了一套响应式,移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列. 什么是 ...
- java第十次作业:oop的第6张图片到第11张图片
- ios之UILabel
详细使用: UILabel *label = [[UILabelalloc] initWithFrame:CGRectMake(0, 0, 75, 40)]; //声明UIlbel并指定其位置和长 ...
- iMessage, Facetime 解决办法
不需要白苹果三码,亲测可用:原帖地址: https://www.reddit.com/r/hackintosh/comments/2wohwn/getting_imessage_working_on_ ...
- [LUOGU] P1536 村村通
题目描述 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府"村村通工程"的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连, ...