MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment filtrer un tableau dans un document Mongodb à l'aide de Spring

Comme vous l'avez dit, elemMatch ne récupérera que le premier objet d'un tableau, vous devez donc utiliser un futur agrégé pour obtenir votre sortie

    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();