我使用Meteor进行网络项目,我需要找到一种方法,通过其中一个属性对集合中的记录进行分组(和计数)。这是来自Collection的示例记录,我要从中执行此操作:
{
"owner" : "7YnNwSC3E3iTcRHcC",
"isbn" : "1551110881",
"title" : "Introduction",
"type" : "0",
"class" : "ADNR1234",
"condition" : "0",
"active" : false,
"createdAt" : ISODate("2014-08-18T15:38:30.012Z"),
"tradeFor" : {
"isbn" : "7463849506",
"title" : "Intro 2"
},
"_id" : "RFzvEdLkYxt5EmQ7s"
}
我知道我需要找到一种方法...我想它被称为聚合?无论如何......我需要使用的属性是" class"。我需要一种方法来浏览整个集合,让我输出每个类(ADNR1234),其中每个类都使用类作为值。
我希望我没有把这个问题写得不好,我对Meteor来说有点新鲜,这似乎是一个试图解决的奇怪问题。
答案 0 :(得分:0)
不支持正式聚合。
然而人们开始解决这个问题:
http://atmospherejs.com/package/mongodb-aggregation?q=aggregation https://github.com/meteor/meteor/pull/644
答案 1 :(得分:0)
Meteor使用MongoInternals从节点驱动程序公开mongo连接,因此您可以使用它来调用聚合。
var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;
var col = db.collection( 'yourCollection' );
var aggregateSync = Meteor._wrapAsync( col.aggregate.bind( col ) );
var pipeline = [{$match: {}},{$group: {_id: '$class', count:{$sum: 1}}} ];
var theAnswer = aggregateSync( pipeline );
aggregation pipeline上的文档还允许您在需要时应用排序和限制等内容。
已更新:使用$match
选择文档更正了管道数组。工作代码为 Meteor Pad。