2015-05-25 11 views
5

Desidero raggruppare alcuni account per mese, posso farlo con Realm.io?Realm.io Query con GroupBy

public class Account extends RealmObject { 
..... 
private Date date; 
} 

RealmResults accounts = realm.where(Account.class) 
.beginGroup() 
.equalTo("date", "MONTH(date)")//<----- wrong code 
.endGroup() 
.findAll(); 

grazie

risposta

2

Realm non supporta ancora i GroupBy. Sappi anche che beginGroup() è in realtà lo stesso di parentesi. Quindi la query è in realtà interpretato come:

// SQL pseudo code 
SELECT * FROM Account WHERE (date = MONTH(date)) 

Nel regno che avrebbe dovuto fare qualcosa di simile per selezionare un solo mese:

// Between is [ monthStart, monthEnd ] 
Date monthStart = new GregorianCalendar(2015, 5, 1).getTime(); 
Date monthEnd = new GregorianCalendar(2015, 6, 1).getTime() - 1; 
accounts = realm.where(Account.class).between("date", monthStart, monthEnd).findAll(); 

o qualcosa di simile per rilevare quando un mese cambia

// pseudo code. You might want to use Calendar instead 
accounts = realm.where(Account.class).findAllSorted("date") 
Iterator<Account> it = accounts.iterator(); 
int previousMonth = it.next().getDate().getMonth(); 
while (it.hasNext) { 
    int month = it.next().getDate().getMonth(); 
    if (month != previousMonth) { 
    // month changed 
    } 
    previousMonth = month; 
} 
+0

grazie mille per la tua risposta rapida. prima funziona per me. – schwertfisch