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

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

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

最佳答案

简单的答案是你不知道。 findOne实现只是普通find周围的便利包装,它仅将响应限制在一个文档中,而不是返回游标。

这样,返回的BasicDBObject实际上实际上只是围绕HashMap的简单包装(带有有序键和一定的序列化视图),因此没有与DBCursor对象关联的特殊属性。

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

就是说,除非您有确凿的理由(例如分析工具),否则我强烈建议您不要这样做。正如您在response to your original question中所给出的那样,原因是读取实际上应该来自主对象。而且,即使您接受来自中学的阅读,您的应用程序也不会在意。

但是,请随便使用。

关于java - 调用findOne API时如何获取Mongo服务器地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21854329/

10-15 10:14