不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常。

 

主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死。

 

在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了已经不被建议使用的方法,于是便抽时间尝试了一下另一种被建议的方式实现各功能。

 

当然了,生产环境中用的是mongodb集群,验证时的写法和单机时会略有不同,我这里就只拿单机试验。

 

使用原生的Java代码操作mongodb数据库,就不需要和spring集成的那些jar包,只用到了mongodb-Java-driver3.0.3.jar,代码如下,一些需要注意的地方也都写在注释中:

 

[java]  view plain  copy
 
  在CODE上查看代码片 派生到我的代码片
  1. package monAndMysql;  
  2.    
  3. import java.util.ArrayList;  
  4. import java.util.Date;  
  5. import java.util.List;  
  6. import java.util.Set;  
  7. import org.bson.BsonDocument;  
  8. import org.bson.BsonString;  
  9. import org.bson.Document;  
  10. import org.bson.conversions.Bson;  
  11. import com.mongodb.BasicDBObject;  
  12. import com.mongodb.DB;  
  13. import com.mongodb.DBCollection;  
  14. import com.mongodb.DBCursor;  
  15. import com.mongodb.DBObject;  
  16. import com.mongodb.MongoClient;  
  17. import com.mongodb.MongoCredential;  
  18. import com.mongodb.ServerAddress;  
  19. import com.mongodb.client.FindIterable;  
  20. import com.mongodb.client.MongoCollection;  
  21. import com.mongodb.client.MongoCursor;  
  22. import com.mongodb.client.MongoDatabase;  
  23. import com.mongodb.client.model.Filters;  
  24.    
  25. /** 
  26.  * mongodb和mysql性能测试 
  27.  * 
  28.  * @author tuzongxun123 
  29.  * 
  30.  */  
  31. public class MonAndMysqlTest {  
  32.    
  33.     public static void main(String[] args) {  
  34.        mongodbTest();  
  35.     }  
  36.    
  37.     public static void mongodbTest() {  
  38.        ServerAddress sa = new ServerAddress("192.168.0.7"27017);  
  39.        List<MongoCredential> mongoCredentialList = newArrayList<MongoCredential>();  
  40.        // java代码连接mongodb3.0数据库验证,userName,dbName,password  
  41.        mongoCredentialList.add(MongoCredential.createMongoCRCredential(  
  42.               "admin""admin""123456".toCharArray()));  
  43.        MongoClient client = new MongoClient(sa, mongoCredentialList);  
  44.        // 第一种方式  
  45.        // 第一种方式获取db,该方法已经不建议使用  
  46.        DB mongoDB = client.getDB("mongoTest1");  
  47.        DBCollection collection1 = mongoDB.getCollection("userTest1");  
  48.        // 这里的数据类型是dbobject  
  49.        DBObject document1 = new BasicDBObject();  
  50.        document1.put("name""mongoTest1");  
  51.        document1.put("createTime"new Date().getTime());  
  52.        // 插入数据  
  53.        collection1.insert(document1);  
  54.        // 查询数据  
  55.        DBCursor cursor1 = collection1.find();  
  56.        System.out.println("第一种方式插入数据的结果:");  
  57.        while (cursor1.hasNext()) {  
  58.            DBObject object = cursor1.next();  
  59.            Set<String> keySet = object.keySet();  
  60.            for (String key : keySet) {  
  61.               System.out.println(key + ":" + object.get(key));  
  62.            }  
  63.        }  
  64.        // 更改数据  
  65.        DBObject query = new BasicDBObject();  
  66.        DBObject update = new BasicDBObject();  
  67.        query.put("name""mongoTest1");  
  68.        update.put("$set"new BasicDBObject("name""update1"));  
  69.        collection1.update(query, update);  
  70.        System.out  
  71.            .println("--------------------------------------------------------------------------------------");  
  72.        System.out.println("第一种方式修改数据的结果:");  
  73.        DBCursor cursor11 = collection1.find();  
  74.        while (cursor11.hasNext()) {  
  75.            DBObject object = cursor11.next();  
  76.            Set<String> keySet = object.keySet();  
  77.            for (String key : keySet) {  
  78.               System.out.println(key + ":" + object.get(key));  
  79.            }  
  80.        }  
  81.        // 删除数据  
  82.        DBObject query1 = new BasicDBObject();  
  83.        query1.put("name""update1");  
  84.        collection1.remove(query1);  
  85.        System.out  
  86.            .println("--------------------------------------------------------------------------------------");  
  87.        System.out.println("第一种方式删除数据的结果:");  
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第六章(操作本地数据库前置知识优化)
【4月更文挑战第6天】本文介绍了Node.js操作本地数据库的前置配置和优化,包括处理接口跨域的CORS中间件,以及解析请求数据的body-parser、cookie-parser和multer。还讲解了与MySQL数据库交互的两种方式:`createPool`(适用于高并发,通过连接池管理连接)和`createConnection`(适用于低负载)。
14 0
|
30天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——TestStu.java
hibernate正向生成数据库表以及配置——TestStu.java
16 1
|
30天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.java
hibernate正向生成数据库表以及配置——Teacher.java
11 0
|
30天前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Student.java
hibernate正向生成数据库表以及配置——Student.java
10 0
|
1月前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
16 0
|
4天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
34 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
14天前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
|
21天前
|
缓存 NoSQL 关系型数据库
【MongoDB】MongoDB更新操作时是否立刻fsync到磁盘?
【4月更文挑战第2天】【MongoDB】MongoDB更新操作时是否立刻fsync到磁盘?
|
22天前
|
消息中间件 NoSQL Kafka
云原生最佳实践系列 5:基于函数计算 FC 实现阿里云 Kafka 消息内容控制 MongoDB DML 操作
该方案描述了一个大数据ETL流程,其中阿里云Kafka消息根据内容触发函数计算(FC)函数,执行针对MongoDB的增、删、改操作。
|
1月前
|
SQL Java 关系型数据库
在Python中编写Java数据库驱动是不可能的
在Python中编写Java数据库驱动是不可能的