2011-06-08 95 views

回答

14

您可以啓用分析,看看在MongoDB中記錄的實際查詢爲@ pingw33n建議。

或者可以爲collection.Find創建extention方法有日誌數據:

public static class MongodbExtentions 
{ 
    public static MongoCursor<T> FindAsAndLogQuery<T>(this MongoCollection<T> coll, 
                    IMongoQuery query) 
    { 
     var queryString = query.ToJson(); 
     //log query here , insert into mongodb, etc ... 
     return coll.FindAs<T>(query); 
    } 
} 
0

擴展方法@Andrew建議將只在搜索內容中的查詢工作。 從MongoDB 3.2開始,你可以做一些類似於下面的事情,它可以處理所有的查詢。

private static void LogQuery<TEntity>(string queryType, FilterDefinition<TEntity> filter, 
      UpdateDefinition<TEntity> update, IMongoCollection<TEntity> collection) 
      where TEntity : class, new() 
     { 
      var renderedFilter = filter.Render(collection.DocumentSerializer, collection.Settings.SerializerRegistry); 
      var renderUpdate = update.Render(collection.DocumentSerializer, collection.Settings.SerializerRegistry); 
      // Log you shell scrip as string to a file or DB 
      Log.Debug(
       $"use {collection.Database.DatabaseNamespace.DatabaseName} db.{collection.CollectionNamespace.CollectionName}.{queryType}({renderedFilter.ToJson()},{renderUpdate.ToJson()})"); 
     } 
相關問題