加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MongoDB Linq是否有“解释查询”?

发布时间:2020-12-15 06:45:43 所属栏目:百科 来源:网络整理
导读:有没有办法在 Linq查询上运行.explain()或等同物?我想知道 实际JSON查询的文本 .explain()的输出(使用的索引等) 查询的执行时间也是很好的 解决方法 如果您有查询包装器,您可以轻松获取Json; var qLinq = QueryT.Where(x = x.name=="jim");Console.WriteLin
有没有办法在 Linq查询上运行.explain()或等同物?我想知道

>实际JSON查询的文本
> .explain()的输出(使用的索引等)
>查询的执行时间也是很好的

解决方法

如果您有查询包装器,您可以轻松获取Json;
var qLinq = Query<T>.Where(x => x.name=="jim");
Console.WriteLine(qLinq.ToJson());

MongoCursor还有一个Explain()方法,所以你可以这样做

var exp = Collection.FindAs<T>(qLinq).Explain()
Console.WriteLine(exp.ToJson());

所以如果你想要花时间,“millis”就在那里;

var msTaken = exp.First(x => x.Name == "millis").Value.AsInt32;

如果你有一个IQueryable,请尝试这样的东西;

void Do(MongoCollection col,IQueryable iq)
{
        // Json Mongo Query
        var imq = (iq as MongoQueryable<Blob>).GetMongoQuery();
        Console.WriteLine(imq.ToString());

        // you could also just do;
        // var cursor = col.FindAs(typeof(Blob),imq);
        var cursor = MongoCursor.Create(typeof(Blob),col,imq,ReadPreference.Nearest);
        var explainDoc = cursor.Explain();

        Console.WriteLine(explainDoc);
    }//Do()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读