2015-12-01 4 views
1

У меня есть осколок кластера с именем test2.MongoDB: запрос на осколки кластера

db.collection.getShardDistribution() дает мне это: enter image description here

Почему мой .count() запрос возвращает только общие документы в shard0000 и мою итерации только итерацию документов в shard0000? Что мне нужно сделать, чтобы мой запрос возвращал всю коллекцию?

System.out.println("Total docs: "+db.getCollection(collectionName).count()); 
    FindIterable<Document> iterable = db.getCollection(collectionName).find(); 

Любой запрос, который я выполняю с различными параметрами, выполняет только итерацию через shard0000.

Редактировать строку соединения:

MongoClient mongoClient = new MongoClient("129.241.xxx.xx",27017); 

Это ошибка. Должен быть порт 27023. Спасибо!

+0

Можете ли вы разместить строку соединения? Указывает ли это на экземпляр монго? И ваша коллекция и ваш кластер имеют то же имя? –

+0

Можете ли вы уточнить? – kongshem

+1

Вы запрашиваете разбитый кластер через экземпляр 'mongos', поэтому вам нужно подключиться к нему. Скорее всего, вы напрямую подключаетесь к shard0000. Просто убедитесь, что вы подключаетесь к экземпляру mongos. Просто добавьте строку подключения и IP-адреса в свой вопрос, [редактируя это] (http://stackoverflow.com/posts/34018856/edit) –

ответ

2

Проблема была в том, что я подключался к неправильному порту после того, как база данных была оштрафована. Мне пришлось изменить строку подключения, чтобы использовать правильный порт, где был запущен мой экземпляр mongo.

Это была моя строка подключения.

MongoClient mongoClient = new MongoClient("129.241.xxx.xx",27017); 

Изменен порт для

MongoClient mongoClient = new MongoClient("129.241.xxx.xx",27023); 

... и это сработало. Спасибо @Markus W Mahlberg за то, что указали мне в правильном направлении.

+0

На стороне примечания, лучше всего использовать 'mongos' на порту 27017, поскольку он предотвращает непреднамеренные подключения к осколкам. – Jaco

 Смежные вопросы

  • Нет связанных вопросов^_^