1
我是CouchBase的新手。我有幾個簡單的文件:如何通過java客戶端查詢couchbase中的特定鍵?
1. {
"docType": "DeviceData",
"id": "57 0F 75 00 C8 [email protected] 23:59:38.979",
"time": 1372271378979,
"group": "London"
}
2. {
"docType": "DeviceData",
"id": "57 0F 75 00 C8 [email protected] 10:02:46.197",
"time": 1372307566197,
"group": "Bristol"
}
3. {
"docType": "DeviceData",
"id": "57 0F 75 00 C8 [email protected] 10:03:36.4",
"time": 1372307616400,
"group": "Bristol"
}
我有要求查詢組和時間。例如我想要取所有與組=布裏斯托爾的文件和時間從1372307616100到1372307616500.所以我處理我應該得到3文檔中的2。
所以我要創建視圖:
function (doc, meta) {
if(doc.docType == "DeviceData")
emit([doc.group, doc.time], doc);
}
並在Java代碼中設置查詢如下:
String str = "[\"Bristol\", 1372307566100]";
String end = "[\"Bristol\", 1372307616500]";
query.setRange(str, end);
List<DeviceData> deviceData = cbStore.getView("getDevices", DeviceData.class, query);
但是,讓零文件。
請讓我知道我有什麼問題嗎?需要幫助謝謝。
* 編輯: 我嘗試使用複雜鍵以及像下面,但沒有運氣。
ComplexKey startKey = ComplexKey.of("Bristol", "1372307566100");
ComplexKey endKey = ComplexKey.of("Bristol", "1372307616500");
1.嘗試查看使用什麼的'Stale'參數值的方式。並嘗試將其設置爲'Stale = false'。 2.檢查您是否發佈了您的視圖。 3.使用Couchbase Web管理面板中的相同參數檢查視圖。如果它返回正確的值,那麼問題出現在您的應用程序中,而不是couchbase。 – m03geek
我已經發布了該視圖,我可以在使用REST網址嘗試獲取記錄。 – GuruKulki
「陳舊」參數呢?正如我記得它應該像'query.setStale(Stale陳舊)'。 PS:順便說一下,不要在你的視圖中包含文檔,如:'emit([doc.group,doc.time],doc);'。最好使用'emit([doc.group,doc.time],null);'並將'IncludeDocs'添加到您的查詢中:'query.setIncludeDocs(boolean include)'。 – m03geek