0
Java MongoDB 3.0에서 두 개의 타임 스탬프 내의 모든 데이터베이스 항목을 어떻게 쿼리합니까?Java MongoDB 3.0+ 타임 스탬프 간의 쿼리
현재이 Java 메소드를 사용하고 있지만 시작 및 종료 타임 스탬프 기준 내에서 문서 세트를 반환하는 데는 문제가 없습니다. 코드는 타임 스탬프 내에있는 경우에만 최신 항목을 반환하기 때문에 조금 손상되었습니다.
public static Reading getReadingsBetween(String type,Timestamp startTime,Timestamp endTime) {
MongoClient mongo = new MongoClient("localhost", 27017);
MongoDatabase db = mongo.getDatabase("SampleDB");
MongoCollection<Document> newColl;
Gson gson = new Gson();
newColl = db.getCollection("SampleCollection");
Document latestEntry = newColl.find().iterator().next();
String json = latestEntry.toJson();
Reading reading = gson.fromJson(json, Reading.class);
String thisTimestamp = reading.getGw_timestamp();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parsedTimestamp = null;
try {
parsedTimestamp = df.parse(thisTimestamp);
} catch (ParseException e) {
return null;
}
Timestamp gwTimestamp = new Timestamp(parsedTimestamp.getTime());
mongo.close();
if (gwTimestamp.after(startTime) && gwTimestamp.before(endTime)) {
return reading;
}
return null;
}
내가 원하는 것은 두 개의 타임 스탬프 내에 데이터베이스 항목 집합을 얻는 것입니다. Java MongoDB 3.0에서이 작업을 어떻게 간단하게 수행합니까? 이 문서 개체의 컬렉션을 얻을 것입니다
FindIterable<Document> findCursor
= newColl.find(
Filters.and(
Filters.gte("timestamp_field", startTime),
Filters.lte("timestamp_field", endTime)));
' 문서 latestEntry = newColl.find(). iterator(). next();'이 코드는 첫 번째 문서를 반환하는 것입니다. 모든 문서를 반복하고 싶습니다. 이상적으로는 컬렉션의 모든 문서가 아니라 타임 스탬프와 일치하는 문서 만 (find 메소드에 필터를 제공하십시오). – Thilo
$ gt 및 $ lt 연산자를 사용하여 쿼리의 타임 스탬프를 필터링해야합니다. 더 쉽고 빠르게 될 것입니다 ... http://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb를 참조하십시오. – felix