Translate FilterDefinition<TDocument> to regular json mongo query that i can run in a mongo shell Translate FilterDefinition<TDocument> to regular json mongo query that i can run in a mongo shell mongodb mongodb

Translate FilterDefinition<TDocument> to regular json mongo query that i can run in a mongo shell


I was trying to solve the same problem today. Here is what I found.

public static class MongoExtensions{    public static BsonDocument RenderToBsonDocument<T>(this FilterDefinition<T> filter)    {        var serializerRegistry = BsonSerializer.SerializerRegistry;        var documentSerializer = serializerRegistry.GetSerializer<T>();        return filter.Render(documentSerializer, serializerRegistry);    }}

I didn't have access to a collection when I was calling it, so I couldn't use the above solutions.

This allows you to do

var json = filter.RenderToBsonDocument().ToJson();


If you're using the latest version of the driver, which is 2.0.1 you can easily put that filter in a Find operation, get back an IFindFluent and print its ToString:

var filter = Builders<LalalaEvent>.Filter.Where(e => ids.Contains(e.Id) && e.Deleted != true);var findFluent = collection.Find(filter);Console.WriteLine(findFluent);

For example for me this prints:

find({ "_id" : { "$in" : [1, 2, 3] }, "Deleted" : { "$ne" : true } })


You are able to perform that using the collection's properties:

var result = filter.Render(collection.DocumentSerializer,                           collection.Settings.SerializerRegistry).ToString();