Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Java驱动程序连接到副本集,使用Node.js驱动程序_Java_Node.js_Mongodb_Mongo Java_Mongojs - Fatal编程技术网

无法使用Java驱动程序连接到副本集,使用Node.js驱动程序

无法使用Java驱动程序连接到副本集,使用Node.js驱动程序,java,node.js,mongodb,mongo-java,mongojs,Java,Node.js,Mongodb,Mongo Java,Mongojs,以下是我如何使用Node.js连接到副本集: var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://ec2-54-237-60-17.compute-1.amazonaws.com:27017/test?readPreference=secondary'; MongoClient.connect(url, function(err, db) { console.log(err); db.

以下是我如何使用Node.js连接到副本集:

var MongoClient = require('mongodb').MongoClient;

var url = 'mongodb://ec2-54-237-60-17.compute-1.amazonaws.com:27017/test?readPreference=secondary';

MongoClient.connect(url, function(err, db) {
    console.log(err);

    db.collection('apps').find({}).limit(5).toArray(function(err, docs) {
        console.log(docs);
    });
});
我在控制台中获得了
5
,因此它可以正常工作。 使用Java驱动程序,我要做的是:

import com.mongodb.MongoClient
import com.mongodb.MongoClientURI
import java.util.ArrayList
import com.mongodb.BasicDBObject

object Main extends App {
    val url = "mongodb://ec2-54-237-60-17.compute-1.amazonaws.com:27017/test?readPreference=secondary"
    val client = new MongoClient(new MongoClientURI(url))

    val db = client.getDatabase("database")
    val collection = db.getCollection("apps")
    val results = collection.find().limit(5).into(new ArrayList[org.bson.Document]())
}
我得到以下例外情况:

com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=secondary}. Client view of cluster state is {type=REPLICA_SET, servers=[{address=belinda-mongo.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: belinda-mongo.localdomain}, caused by {java.net.UnknownHostException: belinda-mongo.localdomain}}, {address=detroit-mongo.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: detroit-mongo.localdomain}, caused by {java.net.UnknownHostException: detroit-mongo.localdomain}}, {address=dione-mongoar.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: dione-mongoar.localdomain}, caused by {java.net.UnknownHostException: dione-mongoar.localdomain}}, {address=pandora-mongo.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: pandora-mongo.localdomain}, caused by {java.net.UnknownHostException: pandora-mongo.localdomain}}, {address=riverside-mongo.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: riverside-mongo.localdomain}, caused by {java.net.UnknownHostException: riverside-mongo.localdomain}}]
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=secondary}. Client view of cluster state is {type=REPLICA_SET, servers=[{address=belinda-mongo.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: belinda-mongo.localdomain}, caused by {java.net.UnknownHostException: belinda-mongo.localdomain}}, {address=detroit-mongo.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: detroit-mongo.localdomain}, caused by {java.net.UnknownHostException: detroit-mongo.localdomain}}, {address=dione-mongoar.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: dione-mongoar.localdomain}, caused by {java.net.UnknownHostException: dione-mongoar.localdomain}}, {address=pandora-mongo.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: pandora-mongo.localdomain}, caused by {java.net.UnknownHostException: pandora-mongo.localdomain}}, {address=riverside-mongo.localdomain:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: riverside-mongo.localdomain}, caused by {java.net.UnknownHostException: riverside-mongo.localdomain}}]
我不知道为什么它和一个司机一起工作,而和另一个司机不工作


编辑:当我试图仅使用以下url连接到主节点时
mongodb://login:pwd@主机:27019/数据库
工作正常,仅当我添加第二个时才会失败。

您的错误消息指的是端口27017(默认mongo端口),考虑到您的mongo URL包含了replicaSet名称,这似乎有些奇怪,例如:
mongodb://login:pwd@主机:27019,主机:27021/数据库?readPreference=secondary&replicaSet=test
@Ross,不,它也不工作。奇怪。似乎没有主机可以从Java应用程序访问,例如:
riverside mongo.localdomain
-可以ping它们吗?因为它们似乎不在主机字符串中,所以它们设置在哪里?复制集是如何配置的?
riverside mongo.localdomain:27017
是您尝试连接到的replicaSet配置的一部分吗?@Ross我正在尝试连接到我们的一个客户端的MongoDB,所以我不是管理副本集的人。因此,我们的服务器上没有定义主机。但我不明白它如何与JavaScript驱动程序一起工作,而不是与Java驱动程序一起工作。当我只包含主地址时,为什么它与Java驱动程序一起工作。