2012-04-30 101 views
0

我的下一个集合:MongoDB的聚合框架和Python

{"status": "new", "date": {"$date": 1334841845571}, "_id": {"$oid": "4f901223e4b0c2899fb22da0"}, "description": "description 1", "number": "01"} 
{"status": "new", "date": {"$date": 1334841845571}, "_id": {"$oid": "4f90126fe4b0c2899fb22da1"}, "description": "description 1", "number": "02"} 
{"status": "new", "date": {"$date": 1334841845571}, "_id": {"$oid": "4f901276e4b0c2899fb22da2"}, "description": "description 1", "number": "03"} 
{"status": "blocked", "date": {"$date": 1332163445571}, "_id": {"$oid": "4f901286e4b0c2899fb22da3"}, "description": "description 1", "number": "04"} 
{"status": "blocked", "date": {"$date": 1332163445571}, "_id": {"$oid": "4f90128ee4b0c2899fb22da4"}, "description": "description 1", "number": "05"} 
{"status": "blocked", "date": {"$date": 1332163445571}, "_id": {"$oid": "4f901292e4b0c2899fb22da5"}, "description": "description 1", "number": "06"} 

我想按 '状态' 栏:

cursor = db.command('aggregate', table, pipeline=[ 
      {'$project': {u'date': 1, u'status': 1, u'number': 1, u'description': 1}} 
      {'$group': {'_id': u'$status'}}]) 

但我得到这个:

"ok" 
"result" 

为什么?

+0

好的我发现结果是光标['结果']但我没有我在$ project中指出的列 {u'ok':1.0,u'result':[{ u'_id ':u'new'},{u'_id ':u'blocked'}]} - 它只显示_id列,但我需要的日期,状态,数量,说明以及 – KennyPowers

回答

1

您将需要这些额外的字段在您的管道添加到“$组”命令,但你需要指定group命令应该如何对其进行聚合,因为它不能只是把它们都在同一个阵列。请提供您期望的输出。

+0

我发现$第一和$最后的运营商,所以如果我的结果,然后由cloumn组排序他们,我可以使用$第一/ $最后的运营商来定义我想有结果的列。所以它解决了,无论如何感谢帮助。 – KennyPowers