zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    数据仓库系列之ETL过程和ETL工具
    大数据从入门到精通
    Mysql误删表中数据与误删表的恢复方法(转)
    Vscode 小白使用介绍
    Window 通过cmd查看端口占用,杀死进程方法
    Python基础教程,Python入门教程(非常详细)
    tuxedo安装与配置入门
    Win10系统Ping端口及利用telnet命令Ping 端口
    Tuxedo 介绍
    hibernate框架的简单入门
  • 原文地址:https://www.cnblogs.com/yanliang12138/p/10012649.html
Copyright © 2011-2022 走看看