2015-02-09 7 views
5

में दो पथों की तुलना नहीं कर सकता Microsoft माइक्रोसॉफ्ट एज़ूर दस्तावेज़ BadRequestException एक अमान्य क्वेरी को पथ (एस) के खिलाफ फ़िल्टर के साथ निर्दिष्ट किया गया है जो श्रेणीबद्ध नहीं हैं। अनुरोध में स्कैन हेडर को जोड़ने की अनुमति दें पर विचार करें।दस्तावेज़ डीबी - क्वेरी

मेरे प्रश्न है:

SELECT c.id FROM users c WHERE (c.lat < 29.89) 

से अधिक ?? दस्तावेजों की संख्या (के रूप में वहाँ दस्तावेज़ की संख्या प्राप्त करने DocumentDB साथ संग्रह में कोई रास्ता नहीं कर रहे हैं)

+0

क्या आप जिस डेटा से पूछ रहे हैं उसका नमूना पोस्ट कर सकते हैं? मैं उपयोगकर्ताओं का अनुमान लगा रहा हूं। यह कुछ ऐसा नहीं है जो तुलनीय है। क्या आप वाकई तार नहीं कर रहे हैं? –

+0

{ "अक्षां": -65.6583190150559, "देशांतर": -74.98864685185254, "उम्र": 45.79291892424226, "बिल्ली": 32, "id": "f6a82cae-8f57-a9a4-d741-6c9054b2c4ec" } – user2402622

+0

जो कि अनुक्रमित नहीं हैं? शायद मुझे विशेष विकल्प जोड़ना चाहिए? मैं नोडज की आवश्यकता ('documentdb') का उपयोग करता हूं। DocumentClient, विकल्प: {masterKey: {authKey}} – user2402622

उत्तर

3

आप ऐसे ब्लॉग पोस्ट को यहाँ को देखें, तो: http://azure.microsoft.com/blog/2015/01/27/performance-tips-for-azure-documentdb-part-2/

अनुक्रमण नीति टिप # 3: निर्दिष्ट सीमा सूचकांक पथ सभी पथों के लिए टाइप करें

दस्तावेज़ डीबी वर्तमान में दो इंडेक्स पथ प्रकारों का समर्थन करता है: हैश और रेंज। हैश का इंडेक्स पथ प्रकार चुनना कुशल समानता क्वेरी सक्षम करता है। चुनना। रेंज के एक सूचकांक प्रकार >, <, >=, <=) का उपयोग कर सीमा प्रश्नों (सक्षम बनाता है

यह सी # में एक उदाहरण देता पथ तुलनीय बनाने के लिए एक रेंज सूचकांक को जोड़ने के लिए है, लेकिन वहाँ node.js library.

जब में इसी तरह की सुविधा है आप एक संग्रह बनाते हैं, आप शरीर पैरामीटर के माध्यम से IndexingPolicy पारित कर सकते हैं। IndexingPolicy सदस्यों की एक जोड़ी है। एक जिनमें से IncludedPaths है, जहां सूचकांक को परिभाषित कर सकते हैं।

var policy = { 
    Automatic: true, 
    IndexingMode: 'Lazy', 
    IncludedPaths: [ 
     { 
     IndexType: "Range", 
     Path: "path to be indexed (c.lat)", 
     NempericPrecission: "1", 
     StringPrecission: "1" 
     } 
    ], 
    ExcludedPaths: [] 
} 

client.createCollection(
    '#yourdblink', 
    { 
    id: 10001, 
    indexingPolicy: policy 
    }); 
+0

नोडजेस अनुरोध से इंडेक्स प्रकार की रेंज का चयन कैसे करें? – user2402622

+0

जब आप अपनी अनुक्रमणिका नीति निर्दिष्ट करते हैं तो आप ऐसा करते हैं। यह कोड में किया जाना है, यह व्यवस्थापक पोर्टल में नहीं किया जा सकता है। –

+0

इसे मेरे उत्तर में जोड़ा गया। –

1

पॉलिसी को नए एज़ूर पोर्टल (https://portal.azure.com) में बदल दिया जा सकता है, (आपके दस्तावेज़ डीबी संसाधन) -> सेटिंग्स -> इंडेक्सिंग नीति।

+0

यह प्रासंगिक कैसे है (यहां तक ​​कि कम, एक जवाब)? –

+0

@ivan_pozdeev: यह मेरी मदद करता है! –

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