Ich habe eine List
eines Objekts und ich muss eine Abfrage in Morphia
führen, um das eindeutige Ergebnis von einer anderen Einbettung List
von String
in bestimmten Objekt zu erhalten.Wie man Aggregation in Morphium durchführt?
Objektklasse:
@Entity
public class Fruits {
@NotNull private Long id;
@NotNull private List<String> categories;
}
Daten im JSON-Format:
Früchte:
{[
"id": 1234566,
"categories": ["A", "B", "C", "D"]
],
[
"id": 32434,
"categories": ["A", "C", "E", "F"]
],
[
"id": 32434,
"categories": ["A", "L", "M", "N"]
]
}
Das Ergebnis der Aggregation sein soll:
[A,C,B,D,E,F,L,M,N]
Der Ausgang ist in sortierter Form. Wie kann ich dies in Morphium erreichen? Ich habe versucht, nach offizieller Dokumentation zu suchen, konnte aber den Hinweis nicht finden.
Jede Hilfe oder Hinweis wäre nennenswert. Dank
EDIT-1
List<Fruits> fruitList = fruitControllerDao.search(fruitList);
List<Category> categories = new ArrayList<>();
datastore.createAggregation(Fruits.class)
.unwind("categories")
.group(Group.id(Group.grouping("categories")))
.sort(Sort.ascending("_id.categories"))
.project(Projection.projection("_id").suppress(),
Projection.projection("categories", "_id.categories"))
.aggregate(Category.class).forEachRemaining(categories::add);
und ich
class Category {
private String category;
}
Daten in fruitList
geschaffen haben, ist unbrauchbar und ich brauche aggregation
auf der fruitList
(Kasse der JSON-Format) selbst zu übernehmen.
Vielen Dank für Ihre Antwort. '_id' bezieht sich auf' Fruits.id' hier. Recht? –
Gern geschehen. Nein, es ist die '_id' aus' group'. Mongo-Shell-Abfrage zum Vergleich hinzugefügt und auch einige Erklärungen in den Post hinzugefügt. – Veeram
Ich versuche diesen Code zu implementieren, bin aber verwirrt darüber, wo und wie Sie die 'Fruit'-Objektdaten im obigen Code verwenden. Könnten Sie mir bitte hier helfen? Ich meine Wie kann ich diese Aggregationsabfrage auf über Json anwenden? –