C#MongoDB IAsyncCursor解释

时间:2018-12-05 12:13:45

标签: c# .net mongodb nosql mongodb-.net-driver

我当前的数据中有文本索引。我正在执行正则表达式搜索,我想确保使用正确的索引。在mongo shell中,我只是使用 explain ,但是如何在C#驱动程序中使用 explain

这是我执行查询的方式:

    public async Task<IEnumerable<GridFSFileInfo>> Find(string fileName)
    {
        var filter = Builders<GridFSFileInfo>.Filter.Regex(x => x.Filename, $"/.*{fileName}.*/i");
        var options = new FindOptions
        {
            Modifiers = new BsonDocument("$hint", "filename_text")
        };
        var result = new List<GridFSFileInfo>();

        using (var cursor = await Collection.Find(filter, options).ToCursorAsync())
        {
            while (await cursor.MoveNextAsync())
            {
                var batch = cursor.Current;
                result.AddRange(batch);
            }
        }

        return result;
    } 

是否存在诸如 Collection.Find(filter,options).Explain()之类的返回字符串之类的东西?我在网上搜索后发现:Is there an "Explain Query" for MongoDB Linq?但是似乎没有解释方法...

1 个答案:

答案 0 :(得分:0)

AFAIK,最新版本的驱动没有提供公共API来使用解释操作,如果你需要指定这个,你可以尝试通过RunCommand<BsonDocument>("{ find query in json format with explain that you can check in the shell }")

指定查找查询