C#LearningTutorial:ConvertFilterDefinitiontoaregularjsonmongoquerythatIcanruninthemongoshell有时希望直接检查Mongo的debugexplain()目的。使用较新的2.0+c#驱动程序,我不知道该怎么做。在以前的版本中,有一个叫做IMongoQuery的东西,效果很好。一个简单的例子:FilterDefinitionfilter=Builders.Filter.Where(e=>ids.Contains(e.Id)&&e.Deleted!=true);如果您使用的是最新版本的驱动程序,即2.0.1,您可以轻松地将此过滤器放入Find操作中,返回IFindFluent并打印其ToString:varfilter=Builders.Filter.Where(e=>ids.Contains(e.Id)&&e.Deleted!=true);varfindFluent=collection.Find(过滤器);Console.WriteLine(findFluent);例如对我来说这个打印:find({"_id":{"$in":[1,2,3]},"Deleted":{"$ne":true}})我试图解决同样的问题今天的问题。这是我发现的。publicstaticclassMongoExtensions{publicstaticBsonDocumentRenderToBsonDocument(thisFilterDefinitionfilter){varserializerRegistry=BsonSerializer.SerializerRegistry;vardocumentSerializer=serializerRegistry.GetSerializer();调用时无法访问Registry}集合;,所以我不能使用上面的解决方案。这让你可以做varjson=filter.RenderToBsonDocument().ToJson();您可以使用集合的属性来做到这一点:以上是C#学习教程:将FilterDefinition转换为常规jsonmongo,我可以在mongoshell中运行查询所有共享的内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——varresult=filter.Render(collection.DocumentSerializer,collection.Settings.SerializerRegistry).ToString();本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
