2010-09-07 15 views
7

Czy można używać symboli wieloznacznych w widokach w CouchDB? Na przykład, powiedzmy, że mam bazę danych zawierającą zespoły, wiek graczy, średnie graczy i płeć graczy. Wieki graczy mogą jednak nie być znane - mogą pochodzić z Republiki Dominikańskiej i tak dalej. Dlatego chcę użyć widoku z funkcją mapy, która może zaakceptować brak wieku gracza. Jeśli chcę uzyskać gracza z najwyższą średnią w zespole, niezależnie od wieku lub wieku, jak mam to zrobić, jeśli chcę korzystać z kluczy złożonych? Na przykład, powiedzmy, że moja mapa emitują funkcja jest coś takiego:Symbole wieloznaczne w widokach z CouchDB?

emit([doc.team, doc.gender, doc.age], doc.average); 

Co mam zrobić, jeśli chcę przekazać w kluczu aby sprowadzić, ale nadal czynnikiem graczy, którzy nie mają wieku wszedł, więc zamiast:

http://127.0.0.1:5984/savings/_design/players/_view/average?key=["Yankees","male",8] 

Uprawiając który zawiera symbole wieloznaczne, takie jak ten, aby uzyskać średnie niezależnie od wieku:

http://127.0.0.1:5984/savings/_design/players/_view/average?key=["Yankees","male",*] 

Czy jest możliwe napisanie widok w CouchDB coś zrobić jak t jego? Czy muszę napisać wiele widoków i przetworzyć je osobno?

Dzięki,
Ben

Odpowiedz

7

Wildcard nie jest możliwe, ale można określić startkey i endkey:

http://127.0.0.1:5984/savings/_design/players/_view/average?startkey=["Yankees","male",0]&endkey=["Yankees","male",999] 
+8

endkey = ["Yankees", "mężczyzna ", {}] powinno działać lepiej, ponieważ {} jest posortowane po dowolnej liczbie. – ordnungswidrig

+0

Jak zauważyliśmy dedalo i ordnungswidrig, możesz użyć pustych nawiasów klamrowych jako symbolu wieloznacznego z kluczem startkey i endkey, więc twoja odpowiedź jest trochę zagmatwana, gdy mówi "wildcard is not possible". – Bdoserror

13

Można określić startkey i endkey i korzystać z "dziką kartę" {}, A JavaScript pusty obiekt:

http://127.0.0.1:5984/savings/_design/players/_view/average?startkey=["Yankees","male",0]&endkey=["Yankees","male",{}] 
Powiązane problemy