2017-08-04 119 views
0

許多領域我想提出與Spring MongoDB的數據的集合,我不知道如何使這個小組賽階段:春MongoDB的數據彙總與_id

$group: { 
        _id: { 
         field1: "$field1", 
         field2: "2017-06-21", 
         field3: "$field3" 
        }, 

        ... 
       } 

我不知道該怎麼把恆日起的_id

第二場就目前而言我這樣做:

groupOperation = group("field1","field3") 

但我不知道它讓小組賽上字段的值和我不沒有怎麼把一個新的字段放入_id。

我沒有找到關於不同階段的總的春季數據的MongoDB

運作良好的文檔如果有人有一個想法,我很感興趣

預先感謝您

+0

仍不支持AFAIK。沒有看過最新的RC。而是使用'new AggregationOperation()'並使用'BasicDBObject'類編寫整個'$ group'。或者確實在最新的RC中使用「Document」,我相信。您可能比維護人員獲得更多反饋,但AFAIK仍然是唯一的方式。 –

+0

對不起,但我不明白這是如何解決問題的,你有沒有例子? – Prosor

+0

當然:https://stackoverflow.com/questions/44694847/geospatial-near-within-current-document-field-value/44695584#44695584顯示使用'新的AggregationOperation()'定義一個流水線階段。只是這裏可以找到的許多例子之一。 –

回答

0

這裏是使用groupcount這些值上的多個字段的示例。

Aggregation aggregate = Aggregation.newAggregation(Aggregation.group("category", "status").count().as("Categoury_Status_Count")); 

AggregationResults<String> aggregateResult = mongoOperations.aggregate(aggregate, "category", String.class); 

System.out.println(aggregateResult.getMappedResults()); 

我的樣本數據: -

/* 1 */ 
{ 
    "_id" : 1, 
    "category" : "cafe", 
    "status" : "A" 
} 

/* 2 */ 
{ 
    "_id" : 2, 
    "category" : "cafe", 
    "status" : "B" 
} 

/* 3 */ 
{ 
    "_id" : 3, 
    "category" : "cafe1", 
    "status" : "A" 
} 

/* 4 */ 
{ 
    "_id" : 4, 
    "category" : "cafe1", 
    "status" : "B" 
} 

/* 5 */ 
{ 
    "_id" : 5, 
    "category" : "cafe1", 
    "status" : "B" 
} 

輸出: -

[{ "category" : "cafe1" , "status" : "A" , "Categoury_Status_Count" : 1}, { "category" : "cafe" , "status" : "B" , "Categoury_Status_Count" : 1}, { "category" : "cafe1" , "status" : "B" , "Categoury_Status_Count" : 2}, { "category" : "cafe" , "status" : "A" , "Categoury_Status_Count" : 1}] 

要獲得_id輸出: -

你Ç將_id添加到集合中。

Aggregation aggregate = Aggregation.newAggregation(Aggregation.group("category", "status").count().as("Categoury_Status_Count").addToSet("_id").as("ids")); 

輸出: -

[{ "category" : "cafe1" , "status" : "A" , "Categoury_Status_Count" : 1 , "ids" : [ 3.0]}, { "category" : "cafe" , "status" : "B" , "Categoury_Status_Count" : 1 , "ids" : [ 2.0]}, { "category" : "cafe1" , "status" : "B" , "Categoury_Status_Count" : 2 , "ids" : [ 5.0 , 4.0]}, { "category" : "cafe" , "status" : "A" , "Categoury_Status_Count" : 1 , "ids" : [ 1.0]}] 
+0

謝謝,但在你的例子中,你失去了_id。 我的輸出應該是這樣的: '{_id:{「field1」:「...」,「field2」:「....」,「field3」:「...」}}' – Prosor

+0

added ID輸出。由於它可以是多個值,因此您需要將其添加到設置中。 – notionquest

+0

在這裏,你添加一個新的id字段,我,就像在MongoBooster上的javascript小組階段一樣,我想它是小組階段自動創建字段「_id」,因爲這個字段就像一個索引,所以它對perf – Prosor