franksisca
07-04-2017, 10:55
Allora, premettendo che io una via di risoluzione l'ho trovata, lato java, volevo però trovare una soluzione lato DB.
Dunque, io ho questo problema. Il mio documento ha tra i suoi fields una String nome ed un Boolean isFolder.
Il mio risultato finale deve comprendere una lista di oggetti che possono essere folder e file.
Nel caso in cui siano folder, devo avere 1 solo elemento nella lista, nel caso siano file, devo averne tutte le ripetizioni.
Per esempio:
Sito1
fileK
fileZ
Folder A
|
--- file1
--- file2
Folder B
|
--- file3
Sito2
fileZ
Folder A
|
--- file6
--- file5
il risultato finale sarà
fileK
fileZ(1)
fileZ(2)
Folder A
|
--- file1
--- file2
--- file6
--- file5
Folder B
|
--- file3
Ok, in java sono riuscito lavorando con hashcode ed wquals ad avere questo comportamento, mentre lavorando con MongoDB non riesco.
Ho provato ad aggregare il risultato della query in questo modo
Criteria criteria = Criteria.where("path").is(path)
.andOperator(Criteria.where("userId").is(username).andOperator(Criteria.where("isShared").is(shared)));
Aggregation agg = Aggregation.newAggregation(Aggregation.match(criteria),Aggregation.group("name"));
AggregationResults<C2CFile> groupResults = mongoTemplate.aggregate(agg, C2CFile.class, C2CFile.class);
List<C2CFile> result = groupResults.getMappedResults();
return result;
ma ovviamente non mi distingue tra file e folder ma, sopratutto, mi perde tutte le informazioni all'interno della classe C2CFile.
Come posso fare per non perdere queste informazioni e farmi dare i risultati che attendo su questa query?
Dunque, io ho questo problema. Il mio documento ha tra i suoi fields una String nome ed un Boolean isFolder.
Il mio risultato finale deve comprendere una lista di oggetti che possono essere folder e file.
Nel caso in cui siano folder, devo avere 1 solo elemento nella lista, nel caso siano file, devo averne tutte le ripetizioni.
Per esempio:
Sito1
fileK
fileZ
Folder A
|
--- file1
--- file2
Folder B
|
--- file3
Sito2
fileZ
Folder A
|
--- file6
--- file5
il risultato finale sarà
fileK
fileZ(1)
fileZ(2)
Folder A
|
--- file1
--- file2
--- file6
--- file5
Folder B
|
--- file3
Ok, in java sono riuscito lavorando con hashcode ed wquals ad avere questo comportamento, mentre lavorando con MongoDB non riesco.
Ho provato ad aggregare il risultato della query in questo modo
Criteria criteria = Criteria.where("path").is(path)
.andOperator(Criteria.where("userId").is(username).andOperator(Criteria.where("isShared").is(shared)));
Aggregation agg = Aggregation.newAggregation(Aggregation.match(criteria),Aggregation.group("name"));
AggregationResults<C2CFile> groupResults = mongoTemplate.aggregate(agg, C2CFile.class, C2CFile.class);
List<C2CFile> result = groupResults.getMappedResults();
return result;
ma ovviamente non mi distingue tra file e folder ma, sopratutto, mi perde tutte le informazioni all'interno della classe C2CFile.
Come posso fare per non perdere queste informazioni e farmi dare i risultati che attendo su questa query?