微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何哄Spring Data向我展示mongo的查询计划(a.k.a cursor.explain())

我正在用Spring / Mongo / Jersey编写一个API,在一个POJO上做CRUD,它有一个通用的属性映射,如下所示:

public class Thing {
    private String id;

    @Indexed
    private Map<String,String> properties;
...

这非常适合退货.我的资源代码如下所示:

BasicDBObject query = new BasicDBObject("properties.name", "vlad the impaler");
return Response.ok(myService.queryThings(query)).build();

而我的抽象DAO看起来像这样:

public List<T> find(Query query) {
        return mongoOps.find(query, clazzOfItem);
}

我无法分辨的是@Indexed注释是否有效.我想尝试解释,(http://docs.mongodb.org/manual/reference/method/cursor.explain/),但我没有看到任何示例告诉我如何从spring数据调用低级驱动程序API.

我希望能够像这样打开调试:

public List<T> find(Query query) {
        if (debugOn) {
            String queryPathDetails = mongoOps.executeCommand( /*NOW WHAT??*/ ).toString();
            logger.log(queryPathDetails);
        }
        return mongoOps.find(query, clazzOfItem);
}

您将提供的任何帮助将不胜感激!

解决方法:

我们尚未提供支持,但您可以设置断点here
    org.springframework.data.mongodb.core.MongoTemplate.QueryCursorPreparer.prepare(..)

在您选择的调试器中,您只需执行一个

cursor.explain()

例如通过eclipse显示视图.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐