2016-09-15 7 views
5
db.query(aql ` 
    FOR doc IN ${collection} 
    FILTER REGEX_TEST(CONCAT(VALUES(doc, true)), ${queryStr}, true) 
     SORT doc[${sortBy}] ${dir} 
     LIMIT ${start, count} 
      RETURN doc._key 
     `) 
     .then(cursor => { 
      cb(cursor._result) 
     }, err => console.log(err)) 

मैं AQL क्वेरी से ऊपर है, सीमित करने से पहले फ़िल्टर किए गए परिणामों की संख्या की गणना करने के लिए मैं (पृष्ठांकन प्रयोजन के लिए)ArangoDb - कैसे उन्हें

मैं प्रति पृष्ठ परिणामों को सीमित करने से पहले फ़िल्टर किए गए परिणामों की कुल nuber गणना करना चाहते हैं लगता है कि इस मुद्दे को इस MySQL - How to count rows before pagination? के समान है, Find total number of results in mySQL query with offset+limit

AQL

साथ ArangoDb में क्या करना

और समाधान का हिस्सा इस How to count number of elements with AQL?

012 हो सकता है चाहता हूँ

तो, एक्यूएल के साथ मेरी आवश्यकता के लिए कुशल/सर्वोत्तम समाधान क्या है?

+0

क्या उत्तर आपकी आवश्यकताओं को पूरा करता है? यदि नहीं, तो क्या गुम है? यदि, क्या आप इसे स्वीकार कर सकते हैं? – dothebart

+0

कृपया एक और मदद कृपया .. :) क्या आप कृपया मुझे निम्नलिखित के लिए एक न्यूनतम उदाहरण दें कि ArangoJS – shivaraj

उत्तर

8

कर्सर को सत्य बनाने के लिए विकल्प में आप ध्वज fullCount सेट कर सकते हैं। फिर परिणाम उप-विशेषताओं stats और fullCount के साथ अतिरिक्त विशेषता होगी।

फिर आप fullCount-cursor.extra.stats.fullCount के माध्यम से सामग्री प्राप्त कर सकते हैं। क्वेरी में लागू होने वाले अंतिम LIMIT से पहले इस विशेषता में परिणाम में दस्तावेज़ों की संख्या शामिल थी। see HTTP documentation

इसके अतिरिक्त, आपको अपनी क्वेरी का विश्लेषण करने के लिए explain feature का उपयोग करना चाहिए। आपके मामले में, आपकी क्वेरी हमेशा एक पूर्ण संग्रह स्कैन करेगी, इस प्रकार अच्छी तरह से स्केल नहीं होगी।

अद्यतन

मैं अपने कोड में fullCount झंडा गयी। ध्यान रखें, fullCount विशेषता केवल तभी दिखाई देती है जब LIMIT से पहले परिणामों की संख्या के बाद परिणाम अधिक हो।

db.query(aql ` 
    FOR doc IN ${collection} 
    FILTER REGEX_TEST(CONCAT(VALUES(doc, true)), ${queryStr}, true) 
     SORT doc[${sortBy}] ${dir} 
     LIMIT ${start, count} 
      RETURN {family: doc.family, group: doc.group} `, {count:true, options:{fullCount:true} }) 
.then(cursor => { console.log(cursor) }, err => console.log(err)) 
+0

का उपयोग करके उपरोक्त को कैसे प्राप्त करें कृपया एक और मदद करें .. :) क्या आप कृपया मुझे अरोंगजेएस का उपयोग करके उपरोक्त को कैसे प्राप्त करें के लिए एक न्यूनतम उदाहरण दें – shivaraj

+0

मैं इस में झंडे कैसे सेट कर सकता हूं .. db.query (aql ' दस्तावेज़ में $ {संग्रह} फ़िल्टर REGEX_TEST (CONCAT (VALUES (दस्तावेज़, सत्य)), $ {queryStr}, सत्य) सॉर्ट दस्तावेज़ [$ {sortBy}] $ {dir} LIMIT $ {start, count} रिटर्न {परिवार: डॉक्टर.फैमिली, समूह: doc.group} ', {count: true})। फिर (कर्सर => { कंसोल। लॉग (कर्सर) }, त्रुटि => console.log (err)) – shivaraj

+0

उपरोक्त के लिए गिनती ध्वज कैसे सेट करें? – shivaraj

संबंधित मुद्दे