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 解释的主要内容,如果未能解决你的问题,请参考以下文章