MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Übersetzen Sie Queryable zurück in IMongoQuery

Bearbeitete Antwort:

Mir wurde klar, dass es bereits eine offizielle Möglichkeit gibt, die Mongo-Abfrage aus einer LINQ-Abfrage zu erhalten (ich hätte es wissen müssen!). Sie müssen das IQueryable in ein MongoQueryable umwandeln, um Zugriff auf die GetMongoQuery-Methode zu erhalten:

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

Ursprüngliche Antwort:

Im Moment gibt es dafür keine offiziell unterstützte Möglichkeit, aber in naher Zukunft wollen wir es einfach machen, herauszufinden, welcher MongoDB-Abfrage die LINQ-Abfrage zugeordnet wurde.

Kurzfristig könnten Sie die folgenden undokumentierten internen Methoden verwenden, um herauszufinden, welcher MongoDB-Abfrage die LINQ-Abfrage zugeordnet ist:

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

Aber irgendwann müssen Sie möglicherweise von diesen undokumentierten Methoden zu offiziell unterstützten Methoden wechseln (die undokumentierten Methoden könnten sich in Zukunft ändern oder umbenannt werden).