如何使用Mango query couchDB获取无限制文档而不提供;“限制”;领域

如何使用Mango query couchDB获取无限制文档而不提供;“限制”;领域,couchdb,couchdb-mango,Couchdb,Couchdb Mango,我在couchdb中使用Mango查询来查找文档。在这里,我在获取与给定条件匹配的所有文档时遇到了一个问题。问题是mango查询的默认限制是25(意味着每次查询获取25个文档),并且我的数据库中有很多文档,我没有文档的确切数量。我不能在mango查询中硬编码限制,因为我不知道文档的上限,我认为硬编码限制不是一个好主意。 有人能帮我解决这个问题吗?如何将限制设为无限制,或者是否有其他方法来处理这种情况?我反驳了同样的问题,并用递归函数解决了它 const batchSize = 25; let b

我在couchdb中使用Mango查询来查找文档。在这里,我在获取与给定条件匹配的所有文档时遇到了一个问题。问题是mango查询的默认限制是25(意味着每次查询获取25个文档),并且我的数据库中有很多文档,我没有文档的确切数量。我不能在mango查询中硬编码限制,因为我不知道文档的上限,我认为硬编码限制不是一个好主意。
有人能帮我解决这个问题吗?如何将限制设为无限制,或者是否有其他方法来处理这种情况?

我反驳了同样的问题,并用递归函数解决了它

const batchSize = 25;
let batchCount = 0;
let searchResults = [];

//  in my case I want to find docs with a certain date, hardcoded here as example
let selectedDate = '2017/10/30'; 

// the recursive function
let search = function (count, limit){
    return db.find({
        selector: {
            date: selectedDate  
        },
        limit: batchSize,
        skip: batchCount*batchSize 
    }).then(function(batch){
        if (batch.docs.length === 0){
            // there are no (more) search results, so we can return what we have

            return searchResults

        } else {
            // there may be more search results, so we add this batch to the result and call the function again to ask more. We increase the counter so that the first batch(es) are skipped

            for (var i = 0; i < batch.docs.length; i++) {
                searchResults.push(batch.docs[i])
            }
            batchCount ++
            return search(batchCount, batchSize) 
        }
    })
}

search(batchCount, batchSize).then(function(result){
    // you can handle the searchresults

})
const batchSize=25;
让batchCount=0;
让searchResults=[];
//在我的例子中,我想查找具有特定日期的文档,这里以硬编码为例
设selectedDate='2017/10/30';
//递归函数
让搜索=函数(计数、限制){
返回db.find({
选择器:{
日期:selectedDate
},
限制:批量大小,
跳过:batchCount*batchSize
}).then(功能(批处理){
if(batch.docs.length==0){
//没有(更多)搜索结果,因此我们可以返回我们拥有的内容
返回搜索结果
}否则{
//可能会有更多的搜索结果,因此我们将此批添加到结果中,并再次调用该函数以询问更多内容。我们增加计数器以便跳过第一批
对于(变量i=0;i
使用CouchDB 2.1,您可以更改默认限制。因此,我认为你无法避免这个限制。无论如何,您应该有一个限制,因为结果越多,通过http处理和发送的时间就越长。您应该始终设计代码来处理请求分页。@Alexistôté谢谢Alexis!!:)我将使用分页方法,因为这似乎是一种更好的方法,也是目前唯一的选择。我的缺点是,分页还不受支持(看起来它将成为下一个版本的一部分),我想你可以暂时设置一个较高的限制数。是的,分页还不受支持。在我的情况下,设定一个上限是行不通的。我必须使用NodeJS(后端代码)添加自定义分页。你知道怎么做到吗?我们在后端使用Node JS,在前端使用Angular JS。我正在考虑为每个页面请求从前端调用NodeJSAPI。这是一个好方法吗?或者有没有更好的方法来实现这一点?根据数据库的结构,您可以通过向mango查询添加另一个选择器来模拟分页,以查找ID大于上一个查询的文档。