I am using Mango query in couch db for almost every query to find the documents. Here I am facing a problem in fetching all the documents matching the given conditions. The problem is that the default limit of mango query is 25 (means fetch 25 documents per query) and there are lot many documents in my database and I don’t have the exact count of documents. I cannot hard code the limit in mango query as I don’t know the upper limit of documents and I don’t think hard coding the limit is a good idea. Can anyone please help me with this issue? How can I make the limit as unlimited or is there any other way to handle this situation?
I countered the same issue and resolved it with a recursive function
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
})
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With