Tag: spring data mongodb

在mongo集合上使用时,Spring数据版本注释不会递增

我正在使用带有mongodb的spring数据来存储二进制数据,例如图像等。我想维护一个版本字段,以附加到url以欺骗浏览器缓存图像。 请参阅下面的文档基类: import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Version; import org.springframework.data.mongodb.core.index.Indexed; public abstract class BaseDocument { @Id @Indexed(unique=true) protected long id; protected byte[] data; protected String mimeType; protected String filename; protected String extension; @Version private Long version; 我还有一个包装MongoOperations的存储库来保存我的文档。 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class DocumentRepository implements IDocumentRepository { @Autowired private MongoOperations mongoTemplate; @Override public void saveDocument(D document) […]

MongoDB,Java:以UTC格式检索日期属性

我将一些实体保存到Mongo数据库,这些实体具有将UTC设置为时区的Joda DateTime属性。 虽然保存工作正常,但我在集合中看到具有正确值的属性,一旦我通过Java检索实体,时区再次设置为UTC + 2。 这是在集合中: “created” : ISODate(“2013-07-26T20:36:57.890Z”) 我正在使用Spring-Data-MongoDB来访问数据库。 Category category = mongoTemplate.findById(id, Category.class); 我最终得到了这个: 2013-07-26T23:05:56.439+02:00 有没有办法告诉Mongo确实返回日期中存储的时区? 提示赞赏,谢谢!

使用spring-data-mongodb流式聚合操作的结果

我正在使用spring-data-mongodb,我想使用游标进行聚合操作。 MongoTemplate.stream()获取一个Query,所以我尝试创建Aggregation实例,使用Aggregation.toDbObject()将其转换为DbObject,使用DbObject创建BasicQuery ,然后调用stream()方法。 这将返回一个空光标。 调试spring-data-mongodb代码显示MongoTemplate.stream()使用FindOperation ,这使得thinkspring-data-mongodb不支持流聚合操作。 有没有人能够使用spring-data-mongodb来汇总聚合查询的结果? 为了记录,我可以使用Java mongodb驱动程序,但我更喜欢使用spring-data。 编辑 11月10日 – 添加示例代码: MatchOperation match = Aggregation.match(Criteria.where(“type”).ne(“AType”)); GroupOperation group = Aggregation.group(“name”, “type”); group = group.push(“color”).as(“colors”); group = group.push(“size”).as(“sizes”); TypedAggregation agg = Aggregation.newAggregation(MyClass.class, Arrays.asList(match, group)); MongoConverter converter = mongoTemplate.getConverter(); MappingContext<? extends MongoPersistentEntity, MongoPersistentProperty> mappingContext = converter.getMappingContext(); QueryMapper queryMapper = new QueryMapper(converter); AggregationOperationContext context = new TypeBasedAggregationOperationContext(MyClass.class, […]

Play-Framework 2.4:使用Spring-Depedency Injection与Play-Framework而不是Guice

我使用Spring-Depedency注入而不是Play-Framework Guice Depedency注入,因为我们的要求,我们需要在我们的应用程序中使用大多数Spring-Modules ,如Spring-Data-Mongodb等。但问题是,我们的依赖项没有在控制器中正确注入,如下所示: 我的配置: @Configuration @ComponentScan(basePackages={“service”, “controllers”}) @EnableMongoRepositories(basePackages=”repository”) public class SpringDataMongoConfiguration extends AbstractMongoConfiguration{ private play.Configuration configuration = play.Configuration.root(); private MongoClientOptions mongoClientOptions(){ Builder builder = new Builder(); builder.connectionsPerHost(configuration.getInt(“connections-per-host”)); builder.connectTimeout(configuration.getInt(“connections-timeout”)); builder.maxConnectionIdleTime(configuration.getInt(“max-connections-idle-time”)); builder.maxConnectionLifeTime(configuration.getInt(“max-connections-life-time”)); builder.minConnectionsPerHost(configuration.getInt(“max-connections-per-host”)); builder.socketKeepAlive(configuration.getBoolean(“socket-keep-live”)); builder.socketTimeout(configuration.getInt(“socket-timeout”)); return builder.build(); } private ServerAddress serverAddress(){ ServerAddress serverAddress = new ServerAddress(new InetSocketAddress(configuration.getString(“mongodb.uri”), configuration.getInt(“mongodb.port”))); return serverAddress; } @Override protected String getDatabaseName() { […]

mongotemplate聚合与条件

我有一个文件看起来像这样的集合: { _id: “545b9fa0dd5318a4285f7ce7”, owner: “admin”, messages: [ { id: “100”, status: “sent”, note: “” }, { id: “100”, status: “pending”, note: “” }, { id: “101”, status: “sent”, note: “” }, { id: “102”, status: “sent”, note: “” }, { id: “101”, status: “done”, note: “” } ] } (这只是一个简短的例子,在我的例子中,子数组非常大) 我需要查询集合并获取特定文档的一些统计信息。 所以在这个例子中,如果我查询具有id:“545b9fa0dd5318a4285f7ce7”的doucment,我应该得到这个结果: { sent: […]

如何在带有spring数据mongodb的java中使用$ lookup阶段?

直到最后一个版本的spring我已经看到很多堆栈溢流问题,这表明在spring-data-mongodb中没有对此操作的支持在新的spring-data-mongodb 1.10.0中是否支持此操作 db.orders.aggregate([ { $lookup: { from: “inventory”, localField: “item”, foreignField: “sku”, as: “inventory_docs” } } ])

如何将带有动态密钥的文档映射到Spring MongoDb实体类

我有一个可以有动态密钥名称的文档: { “_id” : ObjectId(“51a29f6413dc992c24e0283e”), “envinfo” : { “appName” : “MyJavaApp”, “environment” : { “cpuCount” : 12, “heapMaxBytes” : 5724766208, “osVersion” : “6.2”, “arch” : “amd64”, “javaVendor” : “Sun Microsystems Inc.”, “pid” : 44996, “javaVersion” : “1.6.0_38”, “heapInitialBytes” : 402507520, } 这里envinfo的钥匙事先不知道。 在Spring Data Mongodb中创建实体类的最佳方法是什么,它将映射此文档?

在mongo DB中存储java 8 LocalDate

使用Spring boot 1.5.4.RELEASE和Mongo驱动程序3.4.2 。 我想将LocalDate存储在mongo DB ,但我遇到了一个奇怪的问题。 LocalDate startDate = LocalDate.now(); LocalDate endDate = LocalDate.of(2020,12,01); System.out.println(“—- StartDate : —“+startDate); System.out.println(“—–End Date : —-“+endDate); repository.save(new Person(“Mehraj”,”Malik”, startDate, endDate)); 控制台输出: —- StartDate:— 2017-08-26 —–结束日期:—- 2020-12-01 但在MongoDb中存储的日期不正确。 以下是MongoDb的json: “startDate”:ISODate(“2017-08-25T18:30:00.000Z”), “endDate”:ISODate(“2020-11-30T18:30:00.000Z”) 此外,我注意到根据印度时间,存储的时间也是不正确的。 有人可以在这里帮助我..为什么日期在控制台上是正确的但在MongoDB中没有,以及如何解决这个问题。

当手动分配ID时,Spring Data MongoDB Annotation @CreatedDate不起作用

我正在尝试使用审计来在我的对象中保存dateCreated和dateUpdated ,但由于我手动设置了ID ,所以还有一些额外的工作。 遵循Oliver Gierke在DATAMONGO-946中的建议,我试图找出如何正确实现它。 作为上面Jira任务的原始海报,我从这里下载了示例https://github.com/spring-guides/gs-accessing-data-mongodb.git并对其进行了一些修改: package hello; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.domain.Persistable; import java.util.Date; public class Customer implements Persistable { @Id private String id; @CreatedDate private Date createdDate; @LastModifiedDate private Date lastModifiedDate; private String firstName; private String lastName; private boolean persisted; public Customer() { } public Customer(String firstName, String lastName) { […]

使用@Document进行mongodb多语言拼写

这与@Document注释中的MongoDB和SpEL表达式有关 这是我创建mongo模板的方式 @Bean public MongoDbFactory mongoDbFactory() throws UnknownHostException { String dbname = getCustid(); return new SimpleMongoDbFactory(new MongoClient(“localhost”), “mydb”); } @Bean MongoTemplate mongoTemplate() throws UnknownHostException { MappingMongoConverter converter = new MappingMongoConverter(mongoDbFactory(), new MongoMappingContext()); return new MongoTemplate(mongoDbFactory(), converter); } 我有一个租户提供者类 @Component(“tenantProvider”) public class TenantProvider { public String getTenantId() { –custome Thread local logic for getting a name […]