2013-01-14 43 views
4

我正在執行使用java mongodb驅動程序的聚合操作,並且我遵循了來自文檔(粘貼在下面)的示例。據此,應隱藏_id字段。但是,根據我自己的代碼以及本示例的輸出的經驗,即使將投影值設置爲0(它可從mongo shell運行),_id字段也不會隱藏。有誰知道這是否是mongodb java驅動程序中的錯誤?或者我做錯了什麼?mongodb java驅動程序在彙總/投影操作中隱藏ID字段

// 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); 

回答

2

您在最後得到的_id字段來自$group運算符。如果您想將其重命名爲部門,請將另一個$project添加到管道末端,並將_id轉換爲部門。

+0

我想隱藏所有_id字段,我認爲在投影中將_id設置爲0應該隱藏它 –

+0

看看$ group步驟 - 它沒有讓_id傳遞給它,但是您要告訴它使用$ department作爲_id(或者鍵)來分組。原始的_id是*不存在於結果集中。 –

+0

沒錯,但我不想在結果的json中顯示_id。我想按部門分組,但在輸出中隱藏_id字段。 –

相關問題