私のアプリケーションを実行しているときには、使用されたrawクエリに書き込む必要があります。Fluent-mongoを実行しているときに "実際の" mongoクエリを取得する方法
が、このから取得するには、利用可能な任意の方法/拡張メソッドです:私はここにgithubの上のクレイグの答えを再投稿よ同じ質問を持つ人のため
db.EventsReceiver.find({ "userid" : "123" });
私のアプリケーションを実行しているときには、使用されたrawクエリに書き込む必要があります。Fluent-mongoを実行しているときに "実際の" mongoクエリを取得する方法
が、このから取得するには、利用可能な任意の方法/拡張メソッドです:私はここにgithubの上のクレイグの答えを再投稿よ同じ質問を持つ人のため
db.EventsReceiver.find({ "userid" : "123" });
:に似
IQueryable alldata = hr.GetCollection"EventsReceiver").AsQueryable().Where(q => q.UserId == "123");
何か:
var queryObject = ((IMongoQueryable)alldata).GetQueryObject();
これにより、クエリの生成に使用したオブジェクトが戻されます。
FluentMongo v1.2.0.0より、公開されているため公開されていません(悲しいです)。ここでは、それを取得する汚い拡張メソッドです。
しかし、これは非公開のメンバーになるためにリフレクションを使用しているため、将来的には必ず機能するとは考えていません。
public static class MongoQueryableExtensions
{
public static BsonDocument GetMongoQuery<T>(this IQueryable<T> query)
{
if(query == null) throw new ArgumentNullException("query");
Assembly fluentMongoAssembly = typeof(FluentMongo.Linq.MongoCollectionExtensions).Assembly;
Type mongoQueryableType = fluentMongoAssembly.GetType("FluentMongo.Linq.IMongoQueryable");
BsonDocument queryDocument = null;
if(mongoQueryableType.IsAssignableFrom(query.GetType()))
{
MethodInfo m = mongoQueryableType.GetMethod("GetQueryObject");
object queryObject = m.Invoke(query, null);
PropertyInfo queryProperty = fluentMongoAssembly.GetType("FluentMongo.Linq.MongoQueryObject").GetProperty("Query");
queryDocument = (BsonDocument)queryProperty.GetValue(queryObject, null);
}
return queryDocument;
}
}
これは方法ではありませんか? http://stackoverflow.com/questions/10261156/translate-queryablet-back-to-imongoquery?lq=1 –
チェックhttp://stackoverflow.com/questions/10261156/translate-queryablet-back-to-imongoquery?lq=1 –