MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como filtrar array no documento Mongodb usando Spring


Como você disse, o elemMatch recuperará apenas o primeiro objeto em uma matriz, então você deve usar o futuro agregado para obter sua saída
    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();