从Couchbase服务器顺序读取Couchbase Server中的所有文档

时间:2016-02-23 07:00:34

标签: couchbase couchbase-view

我正在创建一个应用程序,它在存储桶中存储大约1M个文档。存储后,我无法检索所有这些内容。我创建了一个视图,并将其添加为生产视图。当我运行我的应用程序时,我始终只能检索1578个文档。 ViewRow的大小也是一样的。我不想使用N1QL。

这是用于检索所有文档的函数。

public Iterable findAllUsers() {

    ViewQuery query = ViewQuery.from("dev_LCDD", "findAllUsers");
    ViewResult result = theBucket.query(query);
    return result;

}

下面给出的函数打印了findAllUsers()函数返回的结果大小,我无法获取所有文档。

    public List findUserInformation() {
        Iterable result = theDao.findAllUsers();
        Gson gson = new GsonBuilder().create();
        ArrayList customers = new ArrayList();

        for (ViewRow row : result) {
            Customer cust = gson.fromJson(row.document().content().toString(), Customer.class);
            if(!docId.isEmpty())
            customers.add(cust);
        }
        System.out.println("List size: "+ customers.size());
        return customers;
    }

有人可以帮我检索所有文件吗?

编辑:我也不确定我的Java API是否仍然只访问开发视图。这是因为只有在开发视图中存在生产视图的副本时,我的应用程序才会运行而不会发出任何警告。我现在从开发视图中删除了副本,我的视图仅存在于生产视图中。我收到以下警告,“com.couchbase.client.core.endpoint.ResponseStatusConverter fromHttp 警告:具有协议HTTP的未知ResponseStatus:500“。

1 个答案:

答案 0 :(得分:2)

'dev_'前缀用于开发设计文档。如果要使用已发布的视图,则需要将其删除。所以你的代码应该是

public Iterable findAllUsers() {

    ViewQuery query = ViewQuery.from("LCDD", "findAllUsers");
    ViewResult result = theBucket.query(query);
    return result;

}