2012-07-24 13 views
9

Mam widoku couchdb skonfigurować przy użyciu wartości klucza tablicy w formacie:CouchDB - Zapytania wartość klucza tablica dla pierwszego elementu kluczowego tylko

[articleId, -timestamp] 

chcę kwerendy dla wszystkich pozycji z tym samym ID artykułu . Wszystkie znaczniki czasu są dopuszczalne.

Teraz używam kwerendę tak:

?startkey=["A697CA3027682D5JSSC",-9999999999999]&endkey=["A697CA3027682D5JSSC",0] 

ale chciałbym coś nieco prostsze.

Czy istnieje prosty sposób, aby całkowicie zakodować drugi kluczowy element? Jaka byłaby najprostsza składnia tego?

+6

wierzę wszystko, co trzeba zrobić, to '? Startkey = [ "A697CA3027682D5JSSC"] endkey = [ "A697CA3027682D5JSSC"{}]' –

Odpowiedz

13

Po pierwsze, jako komentarz wskazał, tam jest rzeczywiście szczególna wartość {} że zamówiono po dowolnej wartości, dzięki czemu staje się zapytanie:

startkey=["target ID"]&endkey=["target ID",{}] 

Jest za równoważne meczu wieloznacznych.

Na marginesie, nie ma potrzeby odwracania porządku w funkcji mapy poprzez emitowanie ujemnego znacznika czasu, można odwrócić kolejność jako opcję wywołania widoku (klucz początkowy i końcowy zostaną zamienione).

startkey=["target ID",{}]&endkey=["target ID"]&descending=true 
+0

Doskonałe. Szukałem po tym wszystkim, ale domyślam się, że moja terminologia nie była dokładna. Bardzo dziękuję :) – Gopherkhan

+0

Gdzie to znalazłeś? działa świetnie, ale pracowałem nad dokumentacją w zeszłym tygodniu i to jest pierwsze miejsce, które widziałem. – MBillau

+1

@MBillau to było za długie, więc już nie pamiętam. Myślę, że miało to coś wspólnego z alfabetycznym porządkiem '{}'. –