2015-02-09 14 views
5

Dokumenty Microsoft Azure BadRequestException Podano niepoprawne zapytanie z filtrami względem ścieżek, które nie są indeksowane zakresami. Rozważ dodanie nagłówka zezwalającego na skanowanie w żądaniu.DocumentDB - Nie można porównać dwóch ścieżek w zapytaniu

Moje zapytanie brzmi:

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

OVER ?? liczba dokumentów (jak istnieje żaden sposób, aby uzyskać numer dokumentu w kolekcji z DocumentDB)

+0

Czy możesz wysłać próbkę danych, których dotyczy zapytanie? Zgaduję, że users.lat nie jest czymś, co jest porównywalne. Jesteś pewien, że to nie są struny? –

+0

{ "ac": -65,6583190150559, "lon": -74,98864685185254, "wiek": 45,79291892424226, "cat": 32, "id" "f6a82cae-8f57-a9a4-d741-6c9054b2c4ec" } – user2402622

+0

, które nie są indeksowane zakresami? może powinienem dodać specjalne opcje? Używam nodejs require ('documentdb'). DocumentClient, opcje: {masterKey: {authKey}} – user2402622

Odpowiedz

3

Jeśli spojrzeć na blogpost tutaj: http://azure.microsoft.com/blog/2015/01/27/performance-tips-for-azure-documentdb-part-2/

Polityka Indeksowanie Tip # 3: Określ ścieżkę indeksu zakres typ dla wszystkich ścieżek używany w zapytaniach dotyczących zakresu

DocumentDB obsługuje obecnie dwa typy ścieżek indeksu: Hash i Range. Wybór typu ścieżki indeksu dla opcji Wstrzymywanie powoduje, że zapytania o efektywność równości są dostępne pod następującymi adresami: . Wybierając typ indeksu of Range umożliwia zapytań zakresie (za pomocą >, <, >=, <=).

Daje przykład w C#, aby dodać zakres indeksów, aby ścieżka porównywalne, ale nie ma podobną funkcjonalność w node.js library.

When tworzenia kolekcji, można zdać IndexingPolicy poprzez parametr treści. IndexingPolicy ma kilka elementów. Jednym z nich jest IncludedPaths, gdzie można zdefiniować indeksów.

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

Jak wybrać typ indeksu zakresu z żądania NodeJs? – user2402622

+0

Robisz to po określeniu zasad indeksowania. Trzeba to zrobić w kodzie, nie można tego zrobić w portalu administratora. –

+0

Dodano go do mojej odpowiedzi. –

1

Zasady można zmienić w nowym portalu Azure (https://portal.azure.com), w obszarze (Twój zasób DocumentDB) -> Ustawienia -> Zasady indeksowania.

+0

Jak to jest istotne (a tym bardziej odpowiedź na to pytanie)? –

+0

@ivan_pozdeev: Pomaga mi! –

Powiązane problemy