0

Mongo Grouping 不会发生在 DB 级别,并且不会将 Mongo Aggregation Framework 与以下代码一起使用。知道为什么吗?我必须创建 CommandDocument 和 RunCommand,然后只有它使用聚合框架。

public IEnumerable<IGrouping<TKey, T>> GetItemsByQuery<TKey>(IMongoQuery query, FieldsBuilder fieldsBuilder, Func<T, TKey> groupbyKey)
{ 
    var mongoCursor = collection.FindAs<T>(query);
    mongoCursor.SetFields(fieldsBuilder);
    return mongoCursor.GroupBy(groupbyKey);
}
4

1 回答 1

0

1) 聚合框架仅在 MongoDB 2.1 及更高版本的不稳定版本中支持。它将在服务器 2.2 中得到正式支持。因此,除非您运行的是服务器 2.1 或更高版本,否则您将无法获得此功能服务器端。

2) 驱动还不支持聚合框架。您可以手动构建聚合并使用 db.RunCommand 来执行它。

3) 您正在调用 MongoCursor 的 IEnumerable 扩展方法。MongoCursor 确实知道您要求它做什么,因此分组将发生在客户端。集合上有一个名为 Group 的方法,但您需要编写一些 javascript 来执行它。

总而言之,我们还没有一个很好的聚合故事。在服务器 2.2 中,这将改变,但它还没有出现。

于 2012-05-29T14:43:19.317 回答