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

由于更改了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("第一种方式删除数据的结果:");  

  88.        DBCursor cursor12 = collection1.find();  

  89.        while (cursor12.hasNext()) {  

  90.            DBObject object = cursor12.next();  

  91.            Set<String> keySet = object.keySet();  

  92.            for (String key : keySet) {  

  93.               System.out.println(key + ":" + object.get(key));  

  94.            }  

  95.        }  

  96.        // 第二种方式  

  97.        System.out  

  98.                .println("****************************************************************************");  

  99.        // 第二种方式获取db及插入数据和查询操作。推荐方式  

  100.        MongoDatabase database = client.getDatabase("mongoTest2");  

  101.        // 注意这里的数据类型是document  

  102.        Document document2 = new Document();  

  103.        document2.put("name""mongoTest2");  

  104.        document2.put("createTime"new Date().getTime());  

  105.        MongoCollection collection2 = database.getCollection("userTest2");  

  106.        // 插入数据  

  107.        collection2.insertOne(document2);  

  108.        // 查询数据,注意这里直接查询出的结果不是游标,还需要转换  

  109.        FindIterable<Document> findIterable = collection2.find();  

  110.        MongoCursor<Document> cursor2 = findIterable.iterator();  

  111.        System.out.println("第二种方式插入数据的结果:");  

  112.        while (cursor2.hasNext()) {  

  113.            Document document = cursor2.next();  

  114.            Set<String> keySet = document.keySet();  

  115.            for (String key : keySet) {  

  116.               System.out.println(key + ":" + document.get(key));  

  117.            }  

  118.        }  

  119.        // 更改数据  

  120.    

  121.        Bson filter = Filters.eq("name""mongoTest2");  

  122.        BsonDocument update2 = new BsonDocument();  

  123.        update2.put("$set"new BsonDocument("name"new BsonString("update2")));  

  124.        collection2.updateOne(filter, update2);  

  125.        System.out  

  126.            .println("--------------------------------------------------------------------------------------");  

  127.        MongoCursor<Document> cursor21 = findIterable.iterator();  

  128.        System.out.println("第二种方式更改数据的结果:");  

  129.        while (cursor21.hasNext()) {  

  130.            Document document = cursor21.next();  

  131.            Set<String> keySet = document.keySet();  

  132.            for (String key : keySet) {  

  133.               System.out.println(key + ":" + document.get(key));  

  134.            }  

  135.        }  

  136.        // 删除数据  

  137.        Bson filter2 = Filters.eq("name""update2");  

  138.        collection2.deleteOne(filter2);  

  139.        System.out  

  140.            .println("--------------------------------------------------------------------------------------");  

  141.        MongoCursor<Document> cursor22 = findIterable.iterator();  

  142.        System.out.println("第二种方式删除数据的结果:");  

  143.        while (cursor22.hasNext()) {  

  144.            Document document = cursor22.next();  

  145.            Set<String> keySet = document.keySet();  

  146.            for (String key : keySet) {  

  147.               System.out.println(key + ":" + document.get(key));  

  148.            }  

  149.        }  

  150.        // 关闭数据库连接  

  151.        client.close();  

  152.     }  

  153.    

  154. }  



执行main方法后,控制台打印结果如下图所示,证明操作都是没有问题的:

不使用spring的情况下原生java代码两种方式操作mongodb数据库_第1张图片


你可能感兴趣的:(不使用spring的情况下原生java代码两种方式操作mongodb数据库)