2014-06-20 4 views

Répondre

0

Ce code renverra un SampleBean avec id sampleId qui n'aura que des éléments correspondants dans les collections foos.

// Match one document with sampleId 
Query q1 = new Query(where("id").is("sampleId")); 

// match only foos with prop2 value value2 
Query q2 = query(where("foos").elemMatch(where("prop2").is("value2)) 

BasicQuery query = new BasicQuery(q1.getQueryObject(), q2.getQueryObject()); 
SampleBean result = mongoTemplate.findOne(query, SampleBean.class) 
0

Si vous utilisez des référentiels de données de printemps, cela peut vous faciliter la vie. Vous aurez besoin d'une classe de domaine. par exemple.

public class Foo { 
    String prop1; 
    String prop2; 
} 

public class MyClass { 
    String id; 
    List<Foo> foos; 
} 

public interface MyClassRepository extends MongoRepository<MyClass, String> { 
    List<MyClass> findByFoosProp2(String prop2ValueToLookFor); 
    // assuming you can find multiple matches 
} 

Ensuite, il suffit d'appeler cette méthode à partir de votre code

public clsss SomeBusinessClass { 
    @Autowired 
    private MyClassRepository repository; 

    public void mySomeBusinessMethod() { 
     List<MyClass> myObjects = repository.findByFoosProp2("value4"); 
    } 
} 
Questions connexes