MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Traduzir Queryable de volta para IMongoQuery


Resposta editada:

Percebi que já existe uma maneira oficial de obter a consulta Mongo de uma consulta LINQ (eu deveria saber!). Você precisa fazer downcast do IQueryable para um MongoQueryable para obter acesso ao método GetMongoQuery:
var linqQuery = from e in collection.AsQueryable<Entity>() where e.Name == "test" select e;
var mongoQuery = ((MongoQueryable<Entity>)linqQuery).GetMongoQuery();

Resposta original:

No momento, não há uma maneira oficialmente suportada de fazer isso, mas em um futuro próximo pretendemos tornar mais fácil descobrir para qual consulta do MongoDB a consulta LINQ foi mapeada.

A curto prazo, você pode usar os seguintes métodos internos não documentados para descobrir para qual consulta do MongoDB a consulta LINQ está mapeada:
var linqQuery = from e in collection.AsQueryable<Entity>() where e.Name == "test" select e;
var translatedQuery = (SelectQuery)MongoQueryTranslator.Translate(linqQuery);
var mongoQuery = translatedQuery.BuildQuery();

Mas em algum momento você pode precisar mudar desses métodos não documentados para métodos oficialmente suportados (os métodos não documentados podem mudar ou ser renomeados no futuro).