用java连接mongodb3报错,5年java 不知道学什么问题在哪

我用java连接mongodb抛出如下错,哪位大神见过??求帮忙。。_百度知道
我用java连接mongodb抛出如下错,哪位大神见过??求帮忙。。
public static void main(String[] args) { // Mongo m = new Mongo();
DB db = MongoUtils.getDB(&test&) ;
DBCollection coll = db.getCollection(&mycollection&) ;
DBObject documents = new BasicDBObject();
documents.put(&name&, &abc&) ;
documents.put(&age&, 24) ;
coll.insert(documents) ; }之后抛出此错误:com.mongodb.MongoException: org.bson.BsonInvalidOperationException: Document does not contain key versionArray at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:112) at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127) at java.lang.Thread.run(Thread.java:745)Caused by: org.bson.BsonInvalidOperationException: Document does not哗浮糕簧蕹毫革桐宫昆 contain key versionArray at org.bson.BsonDocument.throwIfKeyAbsent(BsonDocument.java:757) at org.bson.BsonDocument.getArray(BsonDocument.java:140) at com.mongodb.connection.DescriptionHelper.getVersion(DescriptionHelper.java:106) at com.mongodb.connection.DescriptionHelper.createConnectionDescription(DescriptionHelper.java:56) at com.mongodb.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:85) at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:43) at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:98) ... 2 more
documents.put(&name&, &abc&) ;documents.put(&age&, 24) ;检查你的json数据哗浮糕簧蕹毫革桐宫昆中是否包含这些key
奥,多谢,现已解决,我的driver包版本高了,下了一个版本低一点的好了、
其他类似问题
为您推荐:
cf枪战的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java链接服务器上的mongodb出现connecttimeout问题
十二月 22, :58 下午 com.mongodb.DBTCPConnector initDirectConnection
警告: Exception executing isMaster command on /192.168.1.249:10003
java.io.IOException: couldn't connect to [/192.168.1.249:10003] bc:java.net.SocketTimeoutException: connect timed out
at com.mongodb.DBPort._open(DBPort.java:214)
at com.mongodb.DBPort.go(DBPort.java:107)
at com.mongodb.DBPort.go(DBPort.java:88)
at com.mongodb.DBPort.findOne(DBPort.java:143)
at com.mongodb.DBPort.runCommand(DBPort.java:148)
at com.mongodb.DBTCPConnector.initDirectConnection(DBTCPConnector.java:539)
at com.mongodb.Mongo.getMaxBsonObjectSize(Mongo.java:600)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:233)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:205)
at com.mongodb.DBCollection.insert(DBCollection.java:57)
at com.mongodb.DBCollection.insert(DBCollection.java:100)
at fileUpload.UploadFileTest.test(UploadFileTest.java:35)
at fileUpload.UploadFileTest.main(UploadFileTest.java:41)
十二月 22, :08 下午 com.mongodb.DBTCPConnector initDirectConnection
警告: Exception executing isMaster command on /192.168.1.249:10003
java.io.IOException: couldn't connect to [/192.168.1.249:10003] bc:java.net.SocketTimeoutException: connect timed out
at com.mongodb.DBPort._open(DBPort.java:214)
at com.mongodb.DBPort.go(DBPort.java:107)
at com.mongodb.DBPort.go(DBPort.java:88)
at com.mongodb.DBPort.findOne(DBPort.java:143)
at com.mongodb.DBPort.runCommand(DBPort.java:148)
at com.mongodb.DBTCPConnector.initDirectConnection(DBTCPConnector.java:539)
at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:518)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:174)
at com.mongodb.DBTCPConnector.say(DBTCPConnector.java:155)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:249)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:205)
at com.mongodb.DBCollection.insert(DBCollection.java:57)
at com.mongodb.DBCollection.insert(DBCollection.java:100)
at fileUpload.UploadFileTest.test(UploadFileTest.java:35)
at fileUpload.UploadFileTest.main(UploadFileTest.java:41)
一些常规的解决方法,比如因网络原因连接超时等可以这么解决。讲的还挺详细
/blog/1317433
但是如果设置了这些东西还不能链接,说明服务器上的某些端口未打开造成不可连接。
解决方法要先配置ip表打开某些端口,再restart server即可。
root 进入server
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10002 -j ACCEPT (这里打开的端口为10002)
service iptables restart
再试试代码,搞定!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'NoSql(3)
MongoDB3.0以上的版本相对于之前的版本已经改变了很多了,就比如说,认证方式的方法改变就有点大了,下面分别说一下,认证和不需要认证的代码该怎么写。
1.MongoDB没有添加使用auth认证方式
MongoClientURI uri = new MongoClientURI(&mongodb://192.168.32.129:27017/local&,
MongoClientOptions.builder().cursorFinalizerEnabled(false));
MongoClient client = new MongoClient(uri);
MongoDatabase db=client.getDatabase(&local&);
MongoCollection&Document& collection = db.getCollection(&system.users&);
List&Document& foundDocument = collection.find().into(new ArrayList&Document&());
System.out.println(foundDocument);
2.MongoDB启动的时候添加--auth参数启动MongoDB(即安全认证模式下)
private static MongoClient mongoClient =
private static MongoDatabase database =
private static ServerAddress serverAddress =
private static MongoCredential
credentials
private static List&ServerAddress& addressLists =new ArrayList&ServerAddress&();
private static List&MongoCredential& credentialsLists = new ArrayList&MongoCredential&();
//mongoClient = new MongoClient(&192.168.32.129&,27017);
serverAddress = new ServerAddress(&192.168.32.129&,27017);
addressLists.add(serverAddress);
credentials = MongoCredential.createMongoCRCredential(&admin&, &admin&, &admin&.toCharArray());
credentialsLists.add(credentials);
mongoClient = new MongoClient(addressLists, credentialsLists);
}catch (MongoException e)
System.out.println(e.toString());
if(null != mongoClient){
database = mongoClient.getDatabase(&admin&);
/* collection = database.getCollection(&system.users&);
foundDocument = collection.find().into(
new ArrayList&Document&());
System.out.println(foundDocument);*/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16010次
排名:千里之外
原创:72篇
(5)(9)(2)(6)(58)后使用快捷导航没有帐号?
查看: 2495|回复: 10
java连接虚拟机里面的MongoDB出错
高级会员, 积分 779, 距离下一级还需 221 积分
论坛徽章:3
我用这行代码去连接虚拟机里的MongoDB,
Mongo mongo = new Mongo(&192.168.206.128&, 27017);
结果出现下面的错误
WARNING: Exception executing isMaster command on /192.168.206.128:27017
java.io.IOException: couldn't connect to [/192.168.206.128:27017] bc:java.net.SocketTimeoutException: connect timed out
at com.mongodb.DBPort._open(DBPort.java:214)
at com.mongodb.DBPort.go(DBPort.java:107)
at com.mongodb.DBPort.go(DBPort.java:88)
at com.mongodb.DBPort.findOne(DBPort.java:143)
at com.mongodb.DBPort.runCommand(DBPort.java:148)
虚拟机里的MongoDB是运行的
有谁知道怎么解决这个问题啊
论坛徽章:27
问你几个问题啊:
1:虚拟机是否是桥接
2:宿主机能否和虚拟机互通
3:虚拟机的Linux系统 对应的27017端口是否开放
论坛徽章:64
搞定网络问题先
论坛徽章:64
service iptables stop
关掉虚拟机防火墙试试
论坛徽章:27
tigerxjtu 发表于
service iptables stop
关掉虚拟机防火墙试试
告诉答案 不利于成长哦!
论坛徽章:64
mingfly 发表于
告诉答案 不利于成长哦!
高级会员, 积分 779, 距离下一级还需 221 积分
论坛徽章:3
mingfly 发表于
问你几个问题啊:
1:虚拟机是否是桥接
2:宿主机能否和虚拟机互通
1 不是桥接,是NAT
3 估计是端口没有开放 应该怎么开放啊
高级会员, 积分 779, 距离下一级还需 221 积分
论坛徽章:3
tigerxjtu 发表于
service iptables stop
关掉虚拟机防火墙试试
谢谢啦 现在就去试试
论坛徽章:27
atmb 发表于
1 不是桥接,是NAT
3 估计是端口没有开放 应该怎么开放啊
端口开放:
1:关闭防火墙方法看 4楼
2:将端口添加到规则中。先打开 /etc/sysconfig/iptables 文件, 添加如下一条:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
上面数字8080 代表开放8080端口,你也可以改成其他的端口。
高级会员, 积分 779, 距离下一级还需 221 积分
论坛徽章:3
成功了 就是防火墙的问题<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&}

我要回帖

更多关于 mongodb java driver 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信