MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Traduci Queryable di nuovo in IMongoQuery

Risposta modificata:

Mi sono reso conto che esiste già un modo ufficiale per ottenere la query Mongo da una query LINQ (avrei dovuto saperlo!). Devi eseguire il downcast di IQueryable su MongoQueryable per ottenere l'accesso al metodo GetMongoQuery:

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

Risposta originale:

Al momento non esiste un modo ufficialmente supportato per farlo, ma nel prossimo futuro intendiamo rendere facile scoprire a quale query MongoDB è stata mappata la query LINQ.

A breve termine potresti utilizzare i seguenti metodi interni non documentati per scoprire a quale query MongoDB è mappata la query 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();

Ma a un certo punto potresti dover passare da questi metodi non documentati a metodi ufficialmente supportati (i metodi non documentati potrebbero cambiare o essere rinominati in futuro).