Mongodb 分组为字典式结构
Mongodb Group into Dictionary style structure
假设我有以下记录:
{ id: 1, value : 1, Date: 2016-01-01 },
{ id: 1, value : 2, Date: 2016-01-01 },
{ id: 2, value : 3, Date: 2016-01-01 },
{ id: 3, value : 4, Date: 2016-01-01 }
在 mongodb C# 驱动程序中,我将如何调用具有这种数据格式的集合来生成如下内容:
{
{
id: 1,
records : [
{value : 1, Date: 2016-01-01},
{value : 2, Date: 2016-01-01}
]},
{
id : 2,
records : [{value : 3, Date: 2016-01-01}]
},
{
id : 3,
records : [{value : 4, Date: 2016-01-01}]
}
}
所以我想在 "id" 字段上分组,然后 return 所有结果按其 id 分组作为列表。所以结构类似于 C# 的
Dictionary<int, List<MyObj>>
刚刚意识到这是一个老问题...但是如果有人遇到它:
目前我还没有 mongo 进行测试,但您应该可以通过 linq 使用聚合,例如:
var query = collection.AsQueryable()
.GroupBy(r => r.Id)
.Select(g => new { id = g.Key, records = g.Value });
假设我有以下记录:
{ id: 1, value : 1, Date: 2016-01-01 },
{ id: 1, value : 2, Date: 2016-01-01 },
{ id: 2, value : 3, Date: 2016-01-01 },
{ id: 3, value : 4, Date: 2016-01-01 }
在 mongodb C# 驱动程序中,我将如何调用具有这种数据格式的集合来生成如下内容:
{
{
id: 1,
records : [
{value : 1, Date: 2016-01-01},
{value : 2, Date: 2016-01-01}
]},
{
id : 2,
records : [{value : 3, Date: 2016-01-01}]
},
{
id : 3,
records : [{value : 4, Date: 2016-01-01}]
}
}
所以我想在 "id" 字段上分组,然后 return 所有结果按其 id 分组作为列表。所以结构类似于 C# 的
Dictionary<int, List<MyObj>>
刚刚意识到这是一个老问题...但是如果有人遇到它:
目前我还没有 mongo 进行测试,但您应该可以通过 linq 使用聚合,例如:
var query = collection.AsQueryable()
.GroupBy(r => r.Id)
.Select(g => new { id = g.Key, records = g.Value });