4

java mongodbドライバーを使用して集計操作を実行しており、ドキュメントの例(以下に貼り付け)に従いました。これによると、_idフィールドは非表示にする必要があります。ただし、私自身のコードとこの例の出力の経験では_id、射影値を0に設定してもフィールドは非表示になりません(mongoシェルから機能します)。これがmongodbjavaドライバーのバグであるかどうか誰かが知っていますか?それとも私は何か間違ったことをしていますか?

// create our pipeline operations, first with the $match
DBObject match = new BasicDBObject("$match", new BasicDBObject("type", "airfare") );

// build the $projection operation
DBObject fields = new BasicDBObject("department", 1);
fields.put("amount", 1);
fields.put("_id", 0);
DBObject project = new BasicDBObject("$project", fields );

// Now the $group operation
DBObject groupFields = new BasicDBObject( "_id", "$department");
groupFields.put("average", new BasicDBObject( "$avg", "$amount"));
DBObject group = new BasicDBObject("$group", groupFields);

// run aggregation
AggregationOutput output = collection.aggregate( match, project, group );
4

1 に答える 1

2

最後に取得する_idフィールドは、$groupオペレーターからのものです。名前をdepartmentに戻したい場合$projectは、パイプラインの最後に別の名前を追加し、_idをdepartmentに変換します。

于 2013-01-14T03:35:28.653 に答える