0
我想在我自己的自定義視圖查詢的基礎,但它並沒有變成我的預期。Couchbase精簡版的Java:創建視圖和查詢使用Exact鍵
我想查詢鍵例如[「2017」,「5」,「26」],endDateTime是我的Json數據中存儲毫秒的列。
我已經發出與列表存儲日期。
當我在今天的日期運行我的查詢(數據庫確實有我搜索的日期的數據)時,我用斷點調試以檢查在視圖中存儲日期的列表,並且查詢兩者都是相同的。
我找不到爲什麼queryEnumerator沒有返回行。
請幫助我的問題,我已經嘗試過很多方法,但仍然沒有運氣。
欣賞的幫助。
public View getViewTransactionByEndDate() {
View view = this.getDatabase().getView("Transaction");
if (view.getMap() == null) {
view.setMap(new Mapper() {
@Override
public void map(Map<String, Object> document, Emitter emitter) {
if (document.get("type") != null) {
if (document.get("type").equals("Transaction")) {
Calendar dataCalendar = Calendar.getInstance();
/* due to too long the code, */
/* I have break it to 2 lines */
Long endDateTime =
Long.parseLong(document.get("endDatetime"));
dataCalendar.setTimeInMillis(endDateTime);
List<Object> key = new ArrayList<>();
key.add(dataCalendar.get(Calendar.YEAR));
key.add(dataCalendar.get(Calendar.MONTH) + 1);
key.add(dataCalendar.get(Calendar.DAY_OF_MONTH));
HashMap<String, Object> value = new HashMap<>();
value.put("_id", document.get("_id"));
emitter.emit(key, value);
}
}
}
}, "1");
}
return view;
}
/* The query part */
Query query = getViewTransactionByEndDate().createQuery();
Calendar todayCalendar = Calendar.getInstance();
todayCalendar.setTime(new Date());
List<Object> key = new ArrayList<>();
key.add(todayCalendar.get(Calendar.YEAR));
key.add(todayCalendar.get(Calendar.MONTH) + 1);
key.add(todayCalendar.get(Calendar.DAY_OF_MONTH));
query.setKeys(key);
QueryEnumerator queryEnumerator = query.run();