2015-10-23 1 views
0

Je suis un débutant mongo et je me demande si c'est possible au lieu d'itérer dans toute la liste.Puis-je Filtrer une liste privée dans une classe Dans mongoldb?

J'ai la classe suivante:

public class Person { 
    private String name; 
    private int age; 
    private List<PersonHistory>; 

    //getters and setters... 

} 

public Class PersonHistory { 
    private long created; 
    private long finished; 
} 

Fondamentalement, la liste dans la classe de personne gardera trace du moment où la classe a été modifiée, la classe personne est sérialisé et stocké dans mongo. Un utilisateur demandera alors la liste avec une date donnée (startDate, endDate).

Ainsi, une fois est stocké dans mongo peut filtrer la liste par mongo les dates donnant, ou dois-je obtenir la liste, itérer, renvoie le résultat

+0

Nous pouvons le faire en utilisant l'api de requête fournie par Mongo en java. Veuillez vous référer au lien ci-dessous [https://docs.mongodb.org/getting-started/java/aggregation/] en utilisant l'agrégation. 'AggregateIterable iterable = db.getCollection (" restaurants "). Aggregate (asList ( nouveau document (" $ match ", nouveau document (" borough "," reines "). Append (" cuisine "," brésilien ")) , new Document ("$ group", nouveau document ("_ id", "$ adresse.zipcode"). Append ("count", nouveau document ("$ sum", 1))))); ' –

Répondre

0

Si je comprends bien ce que vous êtes essayer de faire, vous pouvez utiliser la projection pour cette requête:

MongoCursor<Document> iterator = collection.find(new Document("name", "joe")) 
              .projection(Projections.elemMatch("history", new Document("created", 12345))) 
              .iterator(); 
while (iterator.hasNext()) { 
    Document found = iterator.next(); 
    System.out.println(found); 
} 

vous pouvez modifier la projection pour spécifier les champs à inclure ou d'utiliser des critères plus complexes (par exemple, « créé » entre cela et que et plus « fini » que peu importe).

L'API doc pour les projections est ici: http://api.mongodb.org/java/3.0/?com/mongodb/client/model/Projections.html et la vue d'ensemble de la projection est ici: https://docs.mongodb.org/manual/reference/operator/projection