次のコードが機能しています。
var Logs = MvcApplication.MongoLoggingDatabase.GetCollection<Log>("Log")
.Find(queryDocument)
.Select(x => new LogDto { ModelNumber = x.Request.ModelNumber, Make = x.Request.Make, TimeStamp = x.TimeStamp, UserId = x.UserId })
.OrderByDescending(x => x.TimeStamp)
.Skip(pageSize * (page - 1))
.Take(pageSize);
結果を LogDto にマップすることができます。しかし、代わりに FindAs を使用して、必要なフィールドを照会し、対応するサブプロパティを期待どおりにマップできるかどうか疑問に思っています。
私は次のようなものを試しました:
var Logs = MvcApplication.MongoLoggingDatabase.GetCollection<Log>("Log")
.FindAs<LogDto>(queryDocument)
.SetFields(Fields.Exclude("_id").Include("TimeStamp", "UserId", "Request_ModelNumber", "Request_Make"))
.OrderByDescending(x => x.TimeStamp)
.Skip(pageSize * (page - 1))
.Take(pageSize);
TimeStamp と UserId は正しくマッピングされていますが、Make と ModelNumber のみが null を示しています。SetFields を使用して、Request.ModelNumber と Request.Make を LogDto の対応するフィールド (Make と Model) にマップする方法を知りたいです。