spi*_*njo 5 spring mongodb spring-boot
我已经按照 Spring.io 指南使用 rest 访问 MongoDB 数据(https://spring.io/guides/gs/accessing-mongodb-data-rest/)并且可以将文档保存到 mongo 中。
当我尝试将日期字段添加到 POJO 并将日期设置为new Date()
对象时,它只是在保存到 mongo 时将该值保存为 null。
我创建了一个非常基本@RestController
的工作正常(传入请求正文,并使用我的MongoRepository
类将其保存),通过其余控制台保存文档。我尝试在此处创建一个新日期并在将其保存到 Mongo 之前进行设置,但这给了我类似"createdDate": 1472394366324
.
我可以将日期作为字符串保存到 Mongo 中,但我想要的是能够以日期格式保存日期,以便我可以使用基本的“日期之间”查询来查询它们(所以像这样,确切的格式不会很重要 - "date" : ISODate("2014-02-10T10:50:42.389Z")
。我可以编写查询以通过参数获取值,但是要使“日期之间”查询工作,我需要能够将日期值存储到 Mongo 中。
实现这一目标的最简单方法是什么?
编辑:
Pojo类-
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Document(collection = "Musicians")
public class Musician {
@Id
private String id;
private String firstName;
private String lastName;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private Date createdDate = new Date();
public Musician() {}
public Musician(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
//createdDate = new Date();
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Date getCreatedDate() {
return createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
}
Run Code Online (Sandbox Code Playgroud)
RestController 类 -
@RestController
@RequestMapping(value = "/musicians")
public class MusicianController {
@Autowired
MusicianRepository musicianRepository;
@Autowired
MongoTemplate mongoTemplate;
@RequestMapping(method = RequestMethod.POST, value = "")
public ResponseEntity<HttpStatus> createMusician(@RequestBody Musician musician) {
Musician musicianIn = musician;
musicianRepository.save(musicianIn);
return new ResponseEntity(HttpStatus.ACCEPTED);
}
@RequestMapping(method = RequestMethod.GET, value = "")
public ResponseEntity<List<Musician>> getMusicians() {
List<Musician> musicians = musicianRepository.findAll();
return new ResponseEntity<List<Musician>>(musicians, HttpStatus.OK);
}
}
Run Code Online (Sandbox Code Playgroud)
我在本地 mongodb 中尝试过,它有效。
您可以尝试以下操作吗?
package com.mongo.examples;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.bson.BsonDocument;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class MongoDateTest {
public static void main(String args[]){
MongoClient mongoClient = new MongoClient("localhost",27017);
MongoDatabase database = mongoClient.getDatabase("testdates");
MongoCollection<Document> collection = database.getCollection("dts");
collection.drop();
List<Document> insertList = new ArrayList<Document>();
Date date = new Date();
Document document = new Document().
append("_id", 20).append("date",date);
insertList.add(document);
collection.insertMany(insertList);
System.out.println(collection.count());
MongoCursor<Document> doc = collection.find(new Document("date", date)).iterator();
System.out.println(doc.next().getDate("date"));
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24498 次 |
最近记录: |