java访问mongodb_Java中获取MongoDB连接的方法详解

首先是所需jar包,Maven中的配置如下:

org.mongodb

mongodb-driver

3.4.1

org.mongodb

bson

3.4.1

org.springframework.data

spring-data-mongodb

1.7.0.RELEASE

org.mongodb

mongo-java-driver

3.9.1

获取连接的代码如下(本中用的是模板类):

List addrs = new ArrayList();

addrs.add(new ServerAddress(dataSource.getSourceIp(), Integer.valueOf(dataSource.getSourcePort())));

List credentials = new ArrayList();

credentials.add(MongoCredential.createScramSha1Credential(dataSource.getUsername(), dataSource.getSourceName(), dataSource.getPassword().toCharArray()));

MongoClient mongoClient = new MongoClient(addrs, credentials);

MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, dataSource.getSourceName());

MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory);

mongoTemplate.getCollectionNames();

或者用如下方式获取:

ServerAddress serverAddress = new ServerAddress("192.168.16.121",27017);

List addrs = new ArrayList();

addrs.add(serverAddress);

//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码

MongoCredential credential = MongoCredential.createScramSha1Credential("root", "admin", "123456Ab".toCharArray());

List credentials = new ArrayList();

credentials.add(credential);

//通过连接认证获取MongoDB连接

MongoClient mongoClient = new MongoClient(addrs,credentials);

//连接到数据库

MongoDatabase mongoDatabase = mongoClient.getDatabase("admin");

mongoDatabase.getCollection("test").find().iterator();

// 关闭数据库连接

mongoClient.close();

附带简单增删改查的例子:

package test;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import org.junit.Test;

import org.springframework.data.domain.Sort;

import org.springframework.data.mongodb.MongoDbFactory;

import org.springframework.data.mongodb.core.MongoTemplate;

import org.springframework.data.mongodb.core.SimpleMongoDbFactory;

import org.springframework.data.mongodb.core.query.Criteria;

import org.springframework.data.mongodb.core.query.Query;

import org.springframework.data.mongodb.core.query.Update;

import com.mongodb.MongoClient;

import com.mongodb.MongoCredential;

import com.mongodb.ServerAddress;

import com.mongodb.WriteResult;

import bean.Book;

import bean.Good;

import bean.ShopDO;

import net.sf.json.JSONObject;

public class MongoTemplateTest {

public static MongoTemplate mongoTemplate = getMongoTemplate();

public static void main(String[] args) {

System.out.println(mongoTemplate.getCollectionNames());

}

public static MongoTemplate getMongoTemplate(){

String host = "192.168.16.121";

int port = 27017;

String databaseName = "test";

String username = "root";

String password = "123456Ab";

//ServerAddress(host,port)两个参数分别为 IP地址 端口号

ServerAddress serverAddress = new ServerAddress(host,port);

List addrs = new ArrayList();

addrs.add(serverAddress);

//MongoCredential.createScramSha1Credential(username,source,password)三个参数分别为 用户名 数据库名称 密码

MongoCredential credential = MongoCredential.createScramSha1Credential(username, databaseName, password.toCharArray());

List credentials = new ArrayList();

credentials.add(credential);

//通过连接认证获取MongoDB连接

MongoClient mongoClient = new MongoClient(addrs,credentials);

MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient, databaseName);

MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory);

return mongoTemplate;

}

/**

* 插入数据

*/

@Test

public void save(){

ShopDO shop1 = new ShopDO(100L,"菜鸟教程");

ShopDO shop2 = new ShopDO(101L,"有道笔记");

mongoTemplate.save(shop1,"col");

mongoTemplate.save(shop2,"col");

System.out.println("mongoDB插入数据成功,集合为col,文档为:"+mongoTemplate.getCollection("col"));

}

@Test

public void save1(){

Book book = new Book(22L,"英语","32.5");

mongoTemplate.save(book,"col");

}

@Test

public void save2(){

Good good = new Good(new HashMap(){{put("id","1");put("name","动物");}});

mongoTemplate.save(good,"col");

}

@Test

public void save3(){

mongoTemplate.save(JSONObject.fromObject("{\"这样\":\"we\",\"好吧\":\"hai\"}"),"col");

System.out.println("mongoDB插入数据成功,集合为col,文档为:"+mongoTemplate.getCollection("col"));

}

/**

* 查询所有

*/

@Test

public void findAll(){

List list = mongoTemplate.findAll(ShopDO.class,"col");

System.out.println("mongoDB查询数据成功,集合为col,文档为:");

for (ShopDO shopDO:list){

System.out.println(shopDO.getNo()+"/"+shopDO.getName());

}

}

/**

* 单条件查询

*/

@Test

public void simpleQuery(){

Query query = Query.query(Criteria.where("no").is(100L));

List list = mongoTemplate.find(query,ShopDO.class,"col");

System.out.println("mongoDB按条件ID查询数据成功,集合为col,文档为:");

for (ShopDO shopDO:list){

System.out.println(shopDO.getNo()+"/"+shopDO.getName());

}

}

/**

* 多条件查询

*/

@Test

public void muchQuery(){

Criteria criteria = new Criteria();

//or是条件或查询,and是条件与查询

criteria.orOperator(

Criteria.where("no").is(100),

Criteria.where("name").is("菜鸟教程"));

Query query = new Query(criteria); //组合查询放入query

Sort sort = new Sort(new Sort.Order(Sort.Direction.DESC,"no")); //结果集进行排序

query.with(sort);

List list = mongoTemplate.find(query,ShopDO.class,"col");

System.out.println("mongoDB组合查询数据成功,集合为col,文档为:");

for (ShopDO shopDO:list){

System.out.println(shopDO.getNo()+"/"+shopDO.getName());

}

}

/**

* 分页查询

*/

@Test

public void LimitQuery(){

Query query = new Query();

query.skip(1).limit(3);

List list = mongoTemplate.find(query,ShopDO.class,"col");

System.out.println("mongoDB分页查询下标为1开始总共3行数据,集合为col,文档为:");

for (ShopDO shopDO:list){

System.out.println(shopDO.getNo()+"/"+shopDO.getName());

}

}

/**

* 模糊查询

*/

@Test

public void LikeQuery(){

Query query = new Query(Criteria.where("name").regex("菜鸟"));

List list = mongoTemplate.find(query,ShopDO.class,"col");

System.out.println("mongoDB查询名称叫菜鸟的数据成功,集合为col,文档为:");

for (ShopDO shopDO:list){

System.out.println(shopDO.getNo()+"/"+shopDO.getName());

}

Update update = new Update();

update.set("name","菜鸟教程old");

WriteResult wr = mongoTemplate.updateMulti(query,update,"col");

System.out.println("mongoDB更新数据成功,集合为col,行数为:" + wr.getN());

}

/**

* 更新

*/

@Test

public void update(){

Query query = new Query(Criteria.where("no").is(100));

List list = mongoTemplate.find(query,ShopDO.class,"col");

System.out.println("mongoDB查询no为100的数据成功,集合为col,文档为:");

for (ShopDO shopDO:list){

System.out.println(shopDO.getNo()+"/"+shopDO.getName());

}

Update update = new Update();

update.set("name","菜鸟教程new");

WriteResult wr = mongoTemplate.updateFirst(query,update,"col");

System.out.println("mongoDB更新数据成功,集合为col,行数为:" + wr.getN());

}

/**

* 删除

*/

@Test

public void delete(){

Query query = new Query(Criteria.where("no").is(1));

WriteResult result = mongoTemplate.remove(query, "col");

System.out.println("mongoDB删除数据成功,集合为col,行数为:" + result.getN() + "删除的ID为"+result.getUpsertedId());

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@jsonignore的作用

作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。 如下: package com.hzboy.orm;import java.util.List;import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.per…

java between_Java8 Period.between方法坑及注意事项

在使用Java8 新特性中关于Period.between的方法时需注意该方法获取日期的区间问题。Testpublic void test1(){LocalDate from LocalDate.of(2018,10,1);System.out.println(Period.between(from,LocalDate.now()).getDays());}首先,猜测一下上面的代码返回的天数是…

IT英语2-编程词汇编程英语词汇

IT英语2-编程词汇编程英语词汇 A2A integration A2A整合 abstract 抽象的 abstract base class (ABC)抽象基类 abstract class 抽象类 abstraction 抽象、抽象物、抽象性 access 存取、访问 access level访问级别 access function 访问函数 account 账户 action 动作 activate …

webdriver 爬虫 java_java爬虫通过selenium+WebDriver遍历页面链接报错

背景由于要爬取的页面,每个链接的请求都是点击之后js动态发起的,目标数据也多是js动态生成的,所以使用selenium工具webdriver(调试用的是chrome,具体使用准备用phantomjs).模拟登录之后,模拟查询之后,得到如…

java删除集合元素吗_java如何删除集合中的元素

java如何删除集合中的元素如何使用java删除集合中的元素呢?下面是小编给大家提供的删除集合中元素的常见方法,欢迎阅读,更多详情请关注应届毕业生考试网。Java代码如下:package com.jerval.test;import java.util.ArrayList;import java.uti…

XmlDocument类

XmlDocument类是.NET框架的DOC解析器。XmlDocument将XML视为树状结构,它装载XML文档,并在内存中构建该文档的树状结构。下面来看下XmlDocument提供了哪些功能。 一、属性: Attributes      获取一个 XmlAttributeCollection&#xff0c…

java gc回收算法_Java GC回收算法-判定一个对象是否可以回收

开源推荐推荐一款一站式性能监控工具(开源项目)Pepper-Metrics是跟一位同事一起开发的开源组件,主要功能是通过比较轻量的方式与常用开源组件(jedis/mybatis/motan/dubbo/servlet)集成,收集并计算metrics,并支持输出到日志及转换成多种时序数…

动态规划求一个序列的最长回文子序列(Longest Palindromic Substring )

1、问题描述 给定一个字符串(序列),求该序列的最长的回文子序列。 2、分析 需要理解的几个概念: ---回文 ---子序列 ---子串 http://www.cnblogs.com/LCCRNblog/p/4321398.html这一篇文章描述了利用动态规划求解两个序列的最长公共…

java类作用域标识符_java入门 (二) 标识符、数据类型、类型转换、变量、常量、作用域...

java入门(二)标识符数据类型类型转换变量、常量、作用域本次笔记引用B站:狂神说,虽然早就会了,现在回头来敲下基础,加深印象1.标识符:java所有的组成部分都需要名字。类名丶变量名丶方法名统称为标识符。标识符大小写敏感。不能使…

0421 AutoLayout的实践/基本使用

历史:从iOS 6开始 ,之前都是3.5英寸没有考虑到适配.iPhone5 变成了4英寸,所以推出了Auto Layout理解: 另外一个体系,去描述位置.像素:点: // 勘误: 图中的像素应为 “点"// 写上以上代码,就可以删掉系统创建的控制器和storyBoard了.// 创建控制器,勾选Xib[]拖一个uiview背…

C#实现UTC时间与Datetime转换

为了便于传输,通信过程中传输的都是:当前时间跟标准时间相隔的秒数,并且是以16进制字节的形式传输的。 1 public double ConvertDateTimeInt(System.DateTime time)//将时间格式的数据类型转换成浮点数类型 2 {3 doubl…

java selenium iframe_java selenium处理Iframe中的元素示例

java selenium 处理Iframe 中的元素有时候我们定位元素的时候,发现怎么都定位不了。 这时候你需要查一查你要定位的元素是否在iframe里面阅读目录什么是iframeiframe 就是HTML 中,用于网页嵌套网页的。 一个网页可以嵌套到另一个网页中,可以…

des 向量 java_在JAVA中使用DES算法

DES算法提供CBC, OFB, CFB, ECB四种模式,MAC是基于ECB实现的。一、数据补位DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后一段不足8个字节,按照需求补足8个字节(通常补00或者FF,根…

可访问性不一致的原因与解决方法

出现原因,其中一个是返回参数的访问级别小于函数的访问级别,也就是说当定义一个返回参数的方法的时候,如果返回参数的访问级别低于方法的访问级别,此时就会出现这样的错误。如果返回的参数不能被访问,那么定义的返回的方法也是错误…

jQuery 事件 - bind() 方法

定义和用法 bind() 方法为被选元素添加一个或多个事件处理程序&#xff0c;并规定事件发生时运行的函数。 实例1&#xff08;一个事件&#xff09; 记得把js引用地址换掉 当点击鼠标时&#xff0c;隐藏或显示 p 元素&#xff1a; <html><head><script type"…

java 圆形按钮,如何在Java中创建圆形的JButton?

I want to create rounded JButton in Java...For that I use rounded image and placed that image on button but I didnt get rounded button..please any one can tell how to create rounded button in Java like show in below figure..thanks in advance.....解决方案If…

Python学习 Day 3 字符串 编码 list tuple 循环 dict set

字符串和编码 字符 ASCII Unicode UTF-8 A 1000001 00000000 01000001 1000001 中 x 01001110 00101101 11100100 10111000 10101101 格式化 在Python中&#xff0c;采用的格式化方式和C语言是一致的&#xff0c;用%实现&#xff0c;举例如下&#xff1a; >>&…

java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...

有很多文章指出使用JPA / hibernate不需要使用DTO同样在article由SO成员Bohzo我很少需要阅读DTO甚至在articles中反对暴露实体声明当实体没有任何行为时(当它们是POJO时)不需要具有DTO,如在贫血域模型中那样假设有一个Entity类class Department{List employees //lazily loaded…

构建之法现代软件概述

软件工程&#xff1a;就是用科学的知识工程和技术原理来定义&#xff0c;开发&#xff0c;维护软件的一门学科。软件工程的目标&#xff1a;付出较低开发成本&#xff1b;达到要求的功能&#xff1b;取得较好的性能&#xff1b;开发的软件易于移植&#xff1b;只需较低的维护费…

java 高飞_高飞(土木与水利工程学院)老师 - 合肥工业大学

高飞高飞老师的简历姓名:高飞 性别:男 出生年月:1962.11最终学位:硕士 毕业院校:合肥工业大学职称:教授 职务:副院长电话:0551-2901441,13705510744E-mail:gaofeihfut.edu.cn现从事专业:测绘科学与技术社会团体任职:1.全国高等学校测绘学科教学指导委员会,委员;2.中国测绘学会工…