sql >> Base de Datos >  >> NoSQL >> MongoDB

Traducir Queryable de nuevo a IMongoQuery

Respuesta editada:

Me di cuenta de que ya existe una forma oficial de obtener la consulta Mongo a partir de una consulta LINQ (¡debería haberlo sabido!). Debe convertir IQueryable a MongoQueryable para obtener acceso al método GetMongoQuery:

var linqQuery = from e in collection.AsQueryable<Entity>() where e.Name == "test" select e;
var mongoQuery = ((MongoQueryable<Entity>)linqQuery).GetMongoQuery();

Respuesta original:

Por el momento, no existe una forma oficial de hacerlo, pero en un futuro próximo tenemos la intención de facilitar la búsqueda de la consulta de MongoDB a la que se asignó la consulta de LINQ.

A corto plazo, podría usar los siguientes métodos internos no documentados para averiguar a qué consulta MongoDB se asigna la consulta LINQ:

var linqQuery = from e in collection.AsQueryable<Entity>() where e.Name == "test" select e;
var translatedQuery = (SelectQuery)MongoQueryTranslator.Translate(linqQuery);
var mongoQuery = translatedQuery.BuildQuery();

Pero en algún momento es posible que deba cambiar de estos métodos no documentados a métodos compatibles oficialmente (los métodos no documentados pueden cambiar o cambiar de nombre en el futuro).