# MongoDB - klassisches one to many



## Generic1 (21. Mai 2015)

Hallo,

ich mache die ersten Schritte mit MongoDB und hätte eine Frage dazu.
Kann man in MongoDB eine herkömmliche 1:n Beziehung machen, z.B. mehrere Mitarbeiter arbeiten in einer Firma, und eine Firma hat mehrere Mitarbeiter.

Wird da in MongoDB zu jedem Mitarbeiter die Firma mit der gleiche ID mitgespeichert oder wie funktioniert das?
Danke!
Generic1


----------



## stg (21. Mai 2015)

Du kannst entweder zu jedem Mitarbeiter die FirmenID speichern, aber auch zu einer Firma ein Array aller Mitarbeiter IDs. Du kannst aber sogar auch die kompletten Mitarbeiter-Daten eingebettet in den Firmendatensatz speichern. Das hängt immer vom konkreten Fall ab, was sinnvoller ist. Hier vermutlich die erste Variante.
Siehe auch: Data Model Examples and Patterns ? MongoDB Manual 3.0.3


----------



## Generic1 (22. Mai 2015)

Danke für die Antwort.
Ich arbeite mot Spring Data (also mit Repository- interfaces ohne implementierung).
Muss ich das jetzt so handlen: 


```
final Address addressCreated = addressRepository.save(address);
        final Institution institutionCreated = institutionRepository.save(institution);
        final UserBuilder userBuilder = new UserBuilder.Builder().setTitle("Mag.").setFirstname("Max").setSurname("Mustermann")
            .setBirthdate(new Date()).setEmail("max.mustermann@web.de").setTelephone("0664 / 123443422").setUsername("Max Mustermann")
            .setPassword("test123").setRoles(roles).setRolename("TestRole").setSex(SexEnum.FEMALE).setAddress(addressCreated.getId())
            .setInstitution(institutionCreated).build();
        final User user = createUser(userBuilder);
        final User userCreated = userRepository.save(user);
```

also zuerst die Address speichern und aus diesem erzeugten Object dann die ID rausholen und diese ID in das User- Object setzen oder gibt es da einen besseren Weg.
Ich bins bis jetzt von Hibernate so gewöhnt, dass ich mir den Ojectbaum einfach zusammenbau (mit den Ids) und das Root- Object dann speichere -> und alles andere wird mitgespeichert (cascade)


----------

