Using the latest version (2.14) is there any way to view the bson query document generated by a specific linq query?
I want to do this for two reasons:
- debugging queries
- copying them to run in another mongo client like compass
I know I can enable profiling, but I can't see any way to guarantee a query you find in the mongo log was generated by a specific line of code or query. Plus it's a bit long winded to do it via profiling.
CodePudding user response:
You have 2 options to get MQL query from LINQ request:
- Install lately released query analyzer. As I know it may not be 100% accurate if you use global static serialization configuration.
- Configure
CommandStartedEventevent subscriber and analyzeCommanddocument. Pay attention that you may need to remove some technical fields like$db(maybe few more) that might not be parsed by compass correctly, you will see it in the exception message if any.
CodePudding user response:
@dododo answer is the right and best one, I'm just adding some code here which works for option 2:
var settings = MongoClientSettings.FromUrl(new MongoUrl(@"mongodb://localhost"));
settings.ClusterConfigurator = builder =>
{
builder.Subscribe<CommandStartedEvent>(x =>
{
var queryDocument = x.Command;
});
};
var client = new MongoClient(settings);
