C# MongoDB IAsyncCursor 解释

Posted

技术标签:

【中文标题】C# MongoDB IAsyncCursor 解释【英文标题】:C# MongoDB IAsyncCursor Explain 【发布时间】:2018-12-05 12:13:44 【问题描述】:

我的数据中目前有一个文本索引。我正在执行正则表达式搜索,我想确保使用正确的索引。在 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? 但是似乎没有解释方法......

【问题讨论】:

您对此有任何更新吗?在从 MongoDB 文档中了解 Explain() 是什么之后,我尝试在 C# 中查找它。但是没找到…… @shanti nope,还是同样的问题。 【参考方案1】:

现代 mongo c# 驱动程序仅支持一种配置 $explain 的方法。您可以通过FindOptions.Modifiers 执行此操作,就像您在上面配置的$hint 一样。

        var options = new FindOptions
        
            Modifiers = new BsonDocument
            
                 "$hint", "filename_text" ,
                 "$explain", 1 
            
        ;

        var cursor = coll.Find(filter, options).As<BsonDocument>().ToCursor();

注意,由于$explain 完全改变了服务器响应,您应该通过As(如果它已经不是@987654328 @)

【讨论】:

以上是关于C# MongoDB IAsyncCursor 解释的主要内容,如果未能解决你的问题,请参考以下文章

mongodb服务器下中的数据库解锁。

C# 操作mongodb 分组

MongoDB C# Driver 快速入门

MongoDB的C#驱动基本使用

C# 中的 Mongodb 流式聚合和分组

从 C# 驱动程序执行 MongoDB Eval 函数(MongoDB 版本 2.4)