我有以下的LINQ功能:蒙戈,使用totalmilliseconds在LINQ查詢
TimeSpan lInterval = aEndTime - aBeginTime;
int lIntervalInt = (int)Math.Round(lInterval.TotalMilliseconds/(30*60*1000));
var meh = lCollection.Aggregate()
.Match(lValue => lValue.Tag == LTag._id)
.Match(lValue => lValue.TimeStamp >= aBeginTime)
.Match(lValue => lValue.TimeStamp <= aEndTime)
.Group(lValue => new {Period = (lValue.TimeStamp-aBeginTime).TotalMilliseconds/lIntervalInt, TimeStamp = lValue.TimeStamp }, g =>
new
{
Key = g.Key,
avgValue = g.Average(x => x.Value)
})
.Project(r => new cValueDouble()
{
TimeStamp = r.Key.TimeStamp,
Tag = LTag._id,
Value = r.avgValue
});
我收集如下所示:
ObjectId _id;
DateTime TimeStamp;
ObjectId Tag;
double Value;
我所試圖做的是聚集通過具體的值用戶定義的時間間隔。例如,這些值每兩分鐘記錄一次,但我想在30分鐘內平均檢索數據。 但問題看起來像mongo驅動程序不支持timespan.TotalMilliseconds
命令。我在嘗試運行代碼時出現以下錯誤:
「System.NotSupportedException」類型的未處理的異常出現在MongoDB.Driver.dll
附加信息:會員類型System.TimeSpan的TotalMilliseconds在表達式樹({document} {TimeStamp} - 1/1/2010 12:00:00 AM).TotalMilliseconds不能被翻譯。
是否有另一個命令,我可以嘗試做到這一點?或者也許是完全不同的方法。我寧願在mongo中進行聚合,而不是在本地進行聚合。
編輯 有沒有人可以將mongo文檔時間戳轉換爲某種時間格式。我只需要持續引用一段時間。
如何在手之前將其轉換爲雙倍?我需要計算特定文檔的時間戳記是什麼。一個演員會在那裏工作兩倍? – blackwolfsa
在旁註中,前綴表示變量來自哪裏,l =局部聲明,a =參數。它是一種編碼標準,它使編碼和閱讀代碼變得更容易。 – blackwolfsa