这是我之前question的后续行动。假设我有一个使用nearest
读取首选项的应用程序。现在我想验证哪个Mongo
节点实际处理查询。
我知道我可以使用Mongo
API获取该DBCursor.getServerAddress
节点的地址。
假设我致电DBCollection.findOne
,它会返回一个DBObject
而不是DBCursor
。在这种情况下,如何获取Mongo
节点地址?
答案 0 :(得分:3)
简单的答案是你没有。 findOne实现只是普通find的一个便利包装器,它只是限制对一个文档的响应而不是返回游标。
因此,返回的BasicDBObject实际上只是HashMap(有序键和序列化的某种视图)的简单包装,因此没有与DBCursor对象关联的特殊属性。
因此,如果真的对您很重要,那么实际想要做的是使用常规find
和限制结果为一个。在这里,您可以手动处理findOne
正在执行的操作,并且您可以访问游标,以便根据需要调用getServerAddress()。
那就是说,除非你有真正的理由(例如分析工具),否则我会强烈阻止你做这件事。正如你在response to your original question中给出的那样,原因是读取真正应该来自主要版本。即使您接受从二级读取,您的应用程序也不应该关心。
但是,请按照您的意愿使用。