Erstellen Sie Frühjahr die Aggregation der Daten aus MongoDb aggregation-Abfrage

Kann einer mir helfen konvertieren, das mongoDB aggregation zu spring data mongo?

Ich versuche, Liste der un-erinnerte Teilnehmers E-Mail in jeder Einladung Dokument.

Habe es funktioniert in der mongo-shell, aber müssen tun Sie es im Frühjahr Daten mongo.

Meine shell Abfrage

db.invitation.aggregate(
[ 
    { $match : {_id : {$in : [id1,id2,...]}}},
    { $unwind : "$attendees" },
    { $match : { "attendees.reminded" : false}},
    { $project : {_id : 1,"attendees.contact.email" : 1}},
    { $group : {
            _id : "$_id",
            emails : { $push : "$attendees.contact.email"}
        }
    }
]

)

Dies ist, was ich kam mit, wie Sie sehen können, es funktioniert nicht wie erwartet zu einem Projekt und Gruppe Betrieb der pipeline. Generierte Abfrage wird unten gegeben.

Aggregation Objekt-Erstellung

Aggregation aggregation = newAggregation(
        match(Criteria.where("_id").in(ids)),
        unwind("$attendees"),
        match(Criteria.where("attendees.reminded").is(false)),
        project("_id","attendees.contact.email"),
        group().push("_id").as("_id").push("attendees.contact.email").as("emails")
    );

Schafft es die folgende Abfrage

Abfrage generiert, die durch Aggregation Objekt

{ "aggregate" : "__collection__" , "pipeline" : [
{ "$match" : { "_id" : { "$in" : [id1,id2,...]}}},
{ "$unwind" : "$attendees"},
{ "$match" : { "attendees.reminded" : false}},
{ "$project" : { "_id" : 1 , "contact.email" : "$attendees.contact.email"}},
{ "$group" : { "_id" : { "$push" : "$_id"}, "emails" : { "$push" : "$attendees.contact.email"}}}]}

Ich nicht wissen, die richtige Art der Verwendung von Aggregations-Gruppe im Frühjahr Daten mongo.

Könnte jemand mir bitte helfen oder den link geben zu der Gruppe aggregation mit $push etc?

Schreibe einen Kommentar