Couchbase Lite:阅读文档与查询数据
Couchbase Lite: reading document vs querying data
我正在将一个 Android 项目切换为使用 Couchbase Lite,但我对从数据库中获取数据的方法感到困惑。
我有一个文档,里面只有一个 属性:
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("data_key", json);
Document document = database.getDocument("data_doc_id");
document.putProperties(properties);
我的下一步是从数据库中获取存储的数据。我找到了两种方法:
第一种方法是reading the document
Document doc = database.getDocument("data_doc_id");
String json = (String) doc.getProperty("data_key");
第二个是querying
View view = database.getView("data_json");
view.setMap(new Mapper() {
@Override
public void map(Map<String, Object> document, Emitter emitter) {
if ("data_doc_id".equals(document.get("_id")) {
String json = (String) doc.getProperty("data_key");
emitter.emit("data_key", json);
}
}
}, "1.0");
QueryEnumerator queryEnumerator = view.createQuery().run();
String dataJson = "";
for (QueryRow queryRow : run) {
if ("data_key".equals(queryRow.getKey()) {
json = (String) queryRow.getValue();
}
}
使用第一种方法获取存储的 JSON 可以吗?
在什么情况下应使用第二种方法?它的代码比第一个多得多,也许它与缓存有关or/and speed/performance?这种方法的优缺点是什么?
第一种方法是直接检索文档。这是最快的方法。
但是,对于数据库,您通常希望根据数据的某些特征检索文档。为此,您希望能够创建有关数据的查询。这就是第二种方法的目的。
我正在将一个 Android 项目切换为使用 Couchbase Lite,但我对从数据库中获取数据的方法感到困惑。
我有一个文档,里面只有一个 属性:
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("data_key", json);
Document document = database.getDocument("data_doc_id");
document.putProperties(properties);
我的下一步是从数据库中获取存储的数据。我找到了两种方法:
第一种方法是reading the document
Document doc = database.getDocument("data_doc_id"); String json = (String) doc.getProperty("data_key");
第二个是querying
View view = database.getView("data_json"); view.setMap(new Mapper() { @Override public void map(Map<String, Object> document, Emitter emitter) { if ("data_doc_id".equals(document.get("_id")) { String json = (String) doc.getProperty("data_key"); emitter.emit("data_key", json); } } }, "1.0"); QueryEnumerator queryEnumerator = view.createQuery().run(); String dataJson = ""; for (QueryRow queryRow : run) { if ("data_key".equals(queryRow.getKey()) { json = (String) queryRow.getValue(); } }
使用第一种方法获取存储的 JSON 可以吗?
在什么情况下应使用第二种方法?它的代码比第一个多得多,也许它与缓存有关or/and speed/performance?这种方法的优缺点是什么?
第一种方法是直接检索文档。这是最快的方法。
但是,对于数据库,您通常希望根据数据的某些特征检索文档。为此,您希望能够创建有关数据的查询。这就是第二种方法的目的。