当我调用findOne API时如何获取Mongo服务器地址

时间:2014-02-18 12:47:14

标签: java mongodb

这是我之前question的后续行动。假设我有一个使用nearest读取首选项的应用程序。现在我想验证哪个Mongo节点实际处理查询。

我知道我可以使用Mongo API获取该DBCursor.getServerAddress节点的地址。

假设我致电DBCollection.findOne,它会返回一个DBObject而不是DBCursor。在这种情况下,如何获取Mongo节点地址?

1 个答案:

答案 0 :(得分:3)

简单的答案是你没有。 findOne实现只是普通find的一个便利包装器,它只是限制对一个文档的响应而不是返回游标。

因此,返回的BasicDBObject实际上只是HashMap有序键和序列化的某种视图)的简单包装,因此没有与DBCursor对象关联的特殊属性。

因此,如果真的对您很重要,那么实际想要做的是使用常规find限制结果为一个。在这里,您可以手动处理findOne正在执行的操作,并且您可以访问游标,以便根据需要调用getServerAddress()

那就是说,除非你有真正的理由(例如分析工具),否则我会强烈阻止你做这件事。正如你在response to your original question中给出的那样,原因是读取真正应该来自主要版本。即使您接受从二级读取,您的应用程序也不应该关心。

但是,请按照您的意愿使用。