私の地図:
docs.Visits.Select(obj => new {
Year = obj.MetaData.CreatedDate.Year,
Month = obj.MetaData.CreatedDate.Month,
Day = obj.MetaData.CreatedDate.Day,
MediaSource = ((System.String)(obj.MediaSource)),
Version = ((System.String)(obj.Version)),
Count = 1
})
私の削減:
results.GroupBy(result => new {
Year = result.Year,
Month = result.Month,
Day = result.Day,
MediaSource = result.MediaSource,
Version = result.Version
}).Select(agg => new {
Year = agg.Key.Year,
Month = agg.Key.Month,
Day = agg.Key.Day,
MediaSource = agg.Key.MediaSource,
Version = agg.Key.Version,
Count = Enumerable.Sum(agg, x => ((System.Int32)(x.Count)))
})
クエリの例:
Year: 2012 AND Month: 8 AND Day: 22
それでも、重複するアイテムを取得します。カウントが同じである場合もあれば、カウントのみが異なる場合もあります。Visitコレクションのデータセットは約200,000のドキュメントであるため、何もありません。インデックスを再追加して再設定しましたが、それでも同じ奇妙な動作です。
つまり、実際には、次のように、複数の同一のマップが削減されます。
{
"Year": "2012",
"Month": "8",
"Day": "22",
"MediaSource": null,
"Version": null,
"Count": "7701"
}
それらをグループ化すると、どうすればこれが可能になりますか。年、月、日、MediaSource、バージョン?「groupby」でない場合のgroupbyのポイントは何ですか?ある日付では、その日のすべてのカウントの合計が、データベース内の訪問ドキュメントの合計量よりも実際に多くなります。
私は何が間違っているのですか?
データベースサーバービルド960、クライアントビルド888。.NETRavenDBクライアント1.2.2068。