2012-04-30 17 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

私は結果がカーソル['result']であることを発見しましたが、$ projectに指している列はありません {u'ok ':1.0、u'result':[{あなたは_id列だけを表示しますが、日付、ステータス、番号、説明も必要です – KennyPowers

答えて

1

これらの追加フィールドをパイプラインの "$ group"コマンドに追加する必要がありますが、グループコマンドでそれらをまとめて1つの配列にまとめる方法を指定する必要があります。期待どおりのものを出力してください。

+0

$ firstを見つけました。最後の演算子$を使用して結果をソートし、それらをcloumnでグループ化すると、$ first/$ last演算子を使用して結果に含める列を定義できます。とにかく助けてくれてありがとう。 – KennyPowers