2017-03-10 53 views
0

我正在嘗試使用Java爲MongoDB傳輸PostgreSQL。MongoDB與Java - GroupBy更多一列

我有SQL

SELECT id_buyer, buyer, SUM(qtde) 
FROM test.log 
GROUP BY id_buyer, buyer 

和我的新代碼

MongoClient mongoClient = new MongoClient(); 

     MongoDatabase db = mongoClient.getDatabase("teste"); 

     MongoCollection<Document> coll = db.getCollection("log"); 

     DBObject groupFields = new BasicDBObject(); 
     groupFields.put("id_buyer", "$id_buyer"); 
     groupFields.put("buyer", "$buyer");   

     AggregateIterable<Document> mongoCollectionList = coll.aggregate(
       Arrays.asList(
         Aggregates.group(groupFields, Accumulators.sum("qtde", "$qtde")), 
         Aggregates.project(fields(include("comprador", "Quantidade"))) 
       )); 

     MongoCursor<Document> mongoCursor = mongoCollectionList.iterator(); 

     while (mongoCursor.hasNext()) { 
      System.out.println(mongoCursor.next().toJson()); 

     } 

結果

{ "_id" : { "id_buyer" : 2, "buyer" : "COMPS" }, "qtde" : 16703 } 

如何刪除 「id_buyer」 和 「買家」,也就是進入「_id 「?

韓國社交協會

+0

你是問如何從響應刪除'_id'場?像Aggregates.project(fields(excludeId(),include(「comprador」,「Quantidade」)))' – Veeram

+0

我需要刪除_id列中的列「」。 今天我 { 「_id」:{ 「id_buyer」:2, 「買家」: 「贈券」}, 「qtde」:16703} 我需要 { 「id_buyer」:2, 「買家」: 「COMPS」,「qtde」:16703} 我的問題是一起使用「groupFields」「Aggregates.group」 –

+0

您可以嘗試像這樣'Aggregates.project(fields(excludeId(),computed(「id_buyer」, (「買方」,「$ _id.buyer」),包括(「comprador」,「Quantidade」)))' – Veeram

回答

0

我已經測試張貼Veeram的answer和它完美地爲我工作。

這是他sugestion:

Aggregates.project(fields(excludeId(), 
    computed("id_buyer", "$_id.id_buyer"), 
    computed("buyer", "$_id.buyer"), 
    include("comprador", "Quantidade"))); 
0

您嘗試這樣的..

AggregateIterable<Document> mongoCollectionList = collection.aggregate(
        Arrays.asList(
          Aggregates.group(groupFields, Accumulators.sum("qtde", "$qtde")), 
          Aggregates.project(Projections.fields(Projections.include("qtde"),Projections.excludeId())) 
        )); 
+0

我的問題是使用「groupFields 「一起」Aggregates.group「 –

+0

您需要導入以下語句, import com.mongodb.client.mode l.Aggregates; import com.mongodb.client.model.Accumulators; import com.mongodb.client.model.Projections; –