相关疑难解决方法(0)

Spring-data-mongodb连接到一个Mongo实例中的多个数据库

我使用的是最新的spring-data-mongodb(1.1.0.M2)和最新的Mongo Driver(2.9.0-RC1).我有一种情况,我有多个客户端连接到我的应用程序,我想在同一个Mongo服务器中给每个客户端自己的"架构/数据库".如果我直接使用驱动程序,这不是一项非常困难的任务:

Mongo mongo = new Mongo( new DBAddress( "localhost", 127017 ) );

DB client1DB = mongo.getDB( "client1" );
DBCollection client1TTestCollection = client1DB.getCollection( "test" );
long client1TestCollectionCount = client1TTestCollection.count();

DB client2DB = mongo.getDB( "client2" );
DBCollection client2TTestCollection = client2DB.getCollection( "test" );
long client2TestCollectionCount = client2TTestCollection.count();
Run Code Online (Sandbox Code Playgroud)

看,很容易.但是spring-data-mongodb不允许使用多个数据库的简单方法.设置连接的首选方法Mongo是扩展AbstractMongoConfiguration类:

您将看到重写以下方法:

getDatabaseName()
Run Code Online (Sandbox Code Playgroud)

因此它强制您使用一个数据库名称.然后构建的存储库接口使用传递给SimpleMongoRepository类的MongoTemplate中的数据库名称.

我到底在哪里粘贴多个数据库名称?我必须创建多个数据库名称,多个MongoTempates(每个数据库名称一个)和多个其他配置类.而且仍然没有让我的存储库接口使用正确的模板.如果有人尝试过这样的事情,请告诉我.如果我搞清楚,我会在这里发布答案.

谢谢.

java spring mongodb spring-data spring-data-mongodb

24
推荐指数
3
解决办法
3万
查看次数

如何在没有ObjectId的情况下将Mongo与Spring数据一起使用

我有一个现有的mongo数据库,其中id(_id)保留为纯字符串。.这是Mongo DB中的示例数据:

{
    "_id" : "528bb0e2e4b0442f1479f1b4",
    "schoolId" : "URDLKYLFJXLWJGR193778316742298",
    "surname" : "Lewis",
    "admissionNumber" : "0347",
    "firstName" : "Martins"
}
Run Code Online (Sandbox Code Playgroud)

我有一个Java对象,其形式为:

public class Student {

@Id
private String id;
private String schoolId;
private String surname;
private String admissionNumber;
private String firstName;
}
Run Code Online (Sandbox Code Playgroud)

与吸气剂和二传手

我也有一个存储库:

public interface StudentRepository extends MongoRepository<Student, String> {

    Student findOneBySurname(String surname);
    Student findOneById(String id);
    Student findOneBySurnameAndFirstName(String surname, String firstName);
}
Run Code Online (Sandbox Code Playgroud)

当我执行一个studentRepository.findAll()时,我能够正确地填充数据库中的所有Student及其所有字段。

当我执行studentRepository.findOne(“ 528bb0e2e4b0442f1479f1b4”)或studentRepository.findOneById)“ 528bb0e2e4b0442f1479f1b4”)时,它返回null

当我调试mongo查询时,我可以看到它正在调用:

2015-11-19 16:06:32.327 DEBUG 87081 --- [           main] o.s.data.mongodb.core.MongoTemplate      : findOne using query: { …
Run Code Online (Sandbox Code Playgroud)

java spring-data spring-data-mongodb spring-boot

6
推荐指数
1
解决办法
4786
查看次数