Tag: spring data mongodb

Java 8日期/时间(JSR-310)类型与Spring Data MongoDB的映射

我有Java 8日期/时间字段的简单文档 @Document public class Token { private Instant createdAt; … } 我希望坚持使用Spring Data MongoDB 1.5版。 但java.time.Instant类型的字段无法正确反序列化,因为MappingMongoConverter缺少java.time类的转换器。 在Spring 4中,我找到了带有不同Converter的org.springframework.format.datetime.standard.DateTimeConverters ,包括声明为私有静态类的InstantToLongConverter和LongToInstantConverter 。 如何配置MongoTemplate以使用它们将Instant字段映射到longs?

来自MongoDB的随机文档使用spring-data

我可以通过使用这个mongodb本机查询来做到这一点: db.books.aggregate( [ { $sample: { size: 15 } } ] ) 但是如何在spring-data-mongodb做到这一点? 我在Spring Aggregation Framework的 Aggregation类中找不到类似的操作

spring数据mongodb group by

我在我的项目中使用spring数据Mongodb,并在下面的类中引用我的查询来对结果进行分组: 学生class: @Document(collection = “student”) public class Student { @Id private String id; private String firstName; private String lastName; //other fields //getters & setters } StudentResults(dto): public class StudentResults { private String firstName; private List studentIds; //I need List here public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; […]

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(); 看,很容易。 但是spring-data-mongodb不允许使用多个数据库的简单方法。 设置与Mongo的连接的首选方法是扩展AbstractMongoConfiguration类: 您将看到重写以下方法: getDatabaseName() 因此它强制您使用一个数据库名称。 然后构建的存储库接口使用传递到SimpleMongoRepository类的MongoTemplate中的数据库名称。 我到底在哪里粘贴多个数据库名称? […]

Spring数据mongodb – ‘cursor’选项是必需的

我正在尝试使用Spring Data MongoDB 3.6-rc4执行聚合操作。 Aggregation agg = newAggregation( lookup(“orders”, “orderId”, “_id”, “order”) ); List results = mongoOperations.aggregate(agg, “transactions”, BasicDBObject.class).getMappedResults(); 但是在运行查询时遇到以下错误 2017-11-24 17:03:41,539 WARN org.springframework.data.mongodb.core.MongoTemplate : Command execution of { “aggregate” : “transactions” , “pipeline” : [ { “$lookup” : { “from” : “orders” , “localField” : “orderId” , “foreignField” : “_id” , “as” : “order”}}]} […]

以编程方式设置MongoDb转换器

我正在尝试使用带有spring-data-mongodb的自定义转换器。 我想以编程方式创建它,但我收到以下错误: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type org.joda.time.LocalDate to type java.lang.String at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:475) at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:175) at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:154) …. …. 以下是失败的代码段: Mongo mongo = new Mongo(); MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongo, “database”); List converters = new ArrayList(); converters.add(new LocalDateWriteConverter()); converters.add(new LocalDateReadConverter()); CustomConversions customConversions = new CustomConversions(converters); MappingContext mappingContext = new SimpleMongoMappingContext(); MappingMongoConverter […]

制作spring-data-mongodb多租户

在最后一个八月sbzoom的post中提出了一个使spring-data-mongoDB多租户的解决方案: “你必须创建自己的RepositoryFactoryBean。这是Spring Data MongoDB参考文档中的示例。你仍然需要实现自己的MongoTemplate并延迟或删除ensureIndexes()调用。但是你必须重写几个类来确保调用你的MongoTemplate而不是Spring。“ 有没有人实现这个或类似的东西?