Mongo-java开发中的小问题
来源:互联网 发布:java将信息写入文件 编辑:程序博客网 时间:2024/06/01 08:13
在使用java连接MongoDB时,遇到了两个小小的问题,记录下来分享一下。
1 程序明明插入多个document,实际上数据库却只插入了一条记录。
在测试批量插入和单条插入的性能时,我写了这样的代码:
String host="127.0.0.1"; int port=27017; String dbName="test";MongoClient mongoClient=new MongoClient(host, port); MongoDatabase mongoDB=mongoClient.getDatabase(dbName); System.out.println("mongo connect succeed"); Document document=new Document("title","MongoDB") .append("userName", "admin") .append("description", "DataBase"); MongoCollection<Document> collection=mongoDB.getCollection("shit"); List<Document> list=new ArrayList<Document>(); for(int i=0;i<100;i++){ list.add(document); } collection.insertMany(list); System.out.println("insert 100 documents?");
报了异常,查看异常信息:Write errors: [BulkWriteError{index=0, code=11000, message=’E11000 duplicate key error collection,显然这是由于我们只插入了一个文档,它生成了相同的id,导致主键冲突,数据写入失败。我现在用的是mongo驱动的3.2.2版本,在实际开发中使用的则是2.x版本的,在2.x版本中,这样的错误操作不会抛出异常,但实际上只插入了一条记录。所以使用2.x版本的人需要注意这个小小的错误,我当时直接懵了。第二天才发现问题。
2 在数据库连接阶段,不会报出任何异常。
回到上面的代码,我连接的是本地数据库,localhost:27017,如果我们将端口号改成27000这样的错误端口,执行程序,控制台输出如下:
三月 24, 2016 9:26:05 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Cluster created with settings {hosts=[127.0.0.1:27000], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout=’30000 ms’, maxWaitQueueSize=500}
mongo connect succeed
可以看到,即使在连接阶段,端口或者数据库地址错误,甚至是数据库关闭服务,都不会有错误提示,只有在对数据库执行具体操作,比如插入或者查询的时候,才会抛出Socket连接异常。所以我们在判断数据库连接是否成功时,需要执行一个具体操作才能得到正确结果。
第一篇Blog,希望之后能一直坚持
- Mongo-java开发中的小问题
- java中的小问题
- java中的小问题
- Java中的小问题
- Android开发中的小问题
- Python开发中的小问题
- Android开发中的小问题。
- 小程序开发中的问题
- 【Angular2】开发中的小问题
- java开发中的小技巧
- Java中的小问题1
- Java中的一个小问题
- java 中的几个小问题
- Java中的一些小问题
- 三层开发中的一个小问题
- form 开发中的小问题汇总
- .net开发中的几个小问题
- 51单片机开发中的小问题
- 1001 wooden sticks
- 数据结构和算法------查找
- Translation:How to build Tesseract 3.03 with Visual Studio 2013 (翻译《VS2013 建立tesseract3.03工程》)
- php函数
- QGrapicsItem类
- Mongo-java开发中的小问题
- TestNG·一 基础概念
- openSUSE Nagios Quickstart
- opencv2 伸展直方图以提高图像对比度
- python中list总结
- 15个数比较大小
- 接口与抽象类的区别
- 十大ios开发者喜爱的开源库
- poj-3461 Oulipo KMP