2016-04-08 20 views
1

için öznitelik değeri başına 1 bileşen seçin MongoDB'de bir nesne koleksiyonum var ve Spring Data MongoDB kullanıyorum.Spring Data MongoRepository

kişilerin koleksiyonum şuna benzer:

-------------------------------------------- 
| id  | snapshot  | name   | 
-------------------------------------------- 
| 2   | somedate  | bla   | 
| 2   | somedate  | foo   | 
| 3   | somedate  | bar   | 
| 3   | somedate  | cheese  | 
| 6   | somedate  | milk   | 
| 6   | somedate  | lorum  | 
| 6   | somedate  | ipsum  | 
| 9   | somedate  | do   | 
| 10  | somedate  | re   | 
| 10  | somedate  | mi   | 
| 15  | somedate  | fa   |  
-------------------------------------------- 

ben her farklı kimliği sadece bir nesne olması istediğim nesnelerin listesini almak istiyorum, bu kimliği için nesne biri olmalıdır son tarihe kadar.

-------------------------------------------- 
| id  | snapshot  | name   | 
-------------------------------------------- 
| 2   | somedate  | bla   | 
| 3   | somedate  | bar   | 
| 6   | somedate  | milk   | 
| 9   | somedate  | do   | 
| 10  | somedate  | mi   | 
| 15  | somedate  | fa   |  
-------------------------------------------- 

bir MongoRepository sorgu kullanarak bu mümkün mü:

My sonuçta aşağıdaki gibi bir şey olmalı? Herhangi bir yardım için minnettar olurum.

cevap

1

Toplama çerçevesi ile mümkündür. istenen sonucu elde etmek için aşağıdaki toplama işlemi başlat:

import static org.springframework.data.mongodb.core.aggregation.Aggregation.*; 

TypedAggregation<Entity> aggregation = newAggregation(Entity.class, 
    sort(DESC, "snapshot"), 
    group("id") 
     .first("snapshot").as("snapshot") 
     .first("name").as("name") 
); 

AggregationResults<EntityStats> result = mongoTemplate.aggregate(aggregation, EntityStats.class); 
:

db.collection.aggregate([ 
    { "$sort": { "snapshot": -1 } }, 
    { 
     "$group": { 
      "_id": "$id", 
      "snapshot": { "$first": "$snapshot" }, 
      "name": { "$first": "$name" } 
     } 
    } 
]) 

doğal toplama işlemi, yukarıda daha sonra da Yay Verileri MongoDB agregasyona tercüme edilebilir

İlgili konular