我有一个名为test2的分片群集。
db.collection.getShardDistribution()给了我这个:
为什么我的.count()
查询只返回shard0000中的总文档,而我的iterable只遍历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 :(得分:2)
问题是我在分片数据库后连接到错误的端口。我不得不修改我的连接字符串以使用我的mongo实例运行的正确端口。
这是我的连接字符串。
MongoClient mongoClient = new MongoClient("129.241.xxx.xx",27017);
将端口更改为
MongoClient mongoClient = new MongoClient("129.241.xxx.xx",27023);
......它奏效了。感谢@Markus W Mahlberg指出我正确的方向。