MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So filtern Sie ein Array in einem Mongodb-Dokument mit Spring

Wie Sie sagten, elemMatch ruft nur das erste Objekt in einem Array ab, sodass Sie die aggregierte Zukunft verwenden müssen, um Ihre Ausgabe zu erzielen

    MatchOperation match = Aggregation.match(Criteria.where("_id.teacherId").is("1").and("groups.students").in(11));
    UnwindOperation unwind = Aggregation.unwind("groups");
    GroupOperation group = Aggregation.group("_id").push("groups").as("groups").first("points").as("points");
    Aggregation aggregation = Aggregation.newAggregation(unwind, match, group);
    AggregationResults<BasicDBObject> groupResults = mongoTemplate.aggregate(aggregation,
                    CustomGroupsDocument.class, BasicDBObject.class);
    List<BasicDBObject> result = groupResults.getMappedResults();