sql >> Database >  >> NoSQL >> MongoDB

Spring-data-mongodb maakt verbinding met meerdere databases in één Mongo-instantie

Hier is een link naar een artikel dat volgens mij is wat u zoekt http://michaelbarnesjr.wordpress.com/2012/01/19/spring-data-mongo/

De sleutel is om meerdere sjablonen aan te bieden

configureer een sjabloon voor elke database.

<bean id="vehicleTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoConnection"/>
    <constructor-arg name="databaseName" value="vehicledatabase"/>
</bean>

configureer een sjabloon voor elke database.

<bean id="imageTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongoConnection"/>
        <constructor-arg name="databaseName" value="imagedatabase"/>
</bean>

<bean id="vehicleTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoConnection"/>
    <constructor-arg name="databaseName" value="vehicledatabase"/>
</bean>

Nu moet je Spring vertellen waar je repositories zijn, zodat het ze kan injecteren. Ze moeten allemaal in dezelfde directory staan. Ik heb geprobeerd ze in verschillende submappen te plaatsen, maar het werkte niet correct. Dus ze staan ​​allemaal in de repository directory.

<mongo:repositories base-package="my.package.repository">
    <mongo:repository id="imageRepository" mongo-template-ref="imageTemplate"/>
    <mongo:repository id="carRepository" mongo-template-ref="vehicleTemplate"/>
    <mongo:repository id="truckRepository" mongo-template-ref="vehicleTemplate"/>
</mongo:repositories>

Elke repository is een interface en is als volgt geschreven (ja, je kunt ze leeg laten):

@Repository
public interface ImageRepository extends MongoRepository<Image, String> {

}

@Repository
public interface TruckRepository extends MongoRepository<Truck, String> {

}

De naam van de privévariabele imageRepository is de collectie! Afbeelding.java wordt opgeslagen in de afbeeldingsverzameling in de imagedb-database.

Hier is hoe je kunt vinden , invoegen , en verwijderen records:

@Service
public class ImageService {

    @Autowired
    private ImageRepository imageRepository;
}

Door Autowiring stemt u de naam van de variabele af op de naam (id) in uw configuratie.



  1. Laravel:Redis Er kon geen verbinding worden gemaakt:[tcp://127.0.0.1:6379]

  2. Converteer MongoDB-query naar Spring MongoDB-syntaxis

  3. Redis installeren op CentOS 8

  4. Hoe willekeurige records in mongodb te vinden