2010-09-07 4 views
7

Ist es möglich, Platzhalter in Sichten in CouchDB zu verwenden? Nehmen wir zum Beispiel an, dass ich eine Datenbank habe, die Teams, Spieleralter, Spielerdurchschnitt und Geschlecht der Spieler enthält. Das Alter der Spieler kann jedoch nicht bekannt sein - sie könnten aus der Dominikanischen Republik stammen oder so. Daher möchte ich eine Ansicht mit einer Kartenfunktion verwenden, die akzeptiert, dass das Alter des Spielers nicht vorhanden ist. Wenn ich den Spieler mit dem höchsten Durchschnitt in einer Mannschaft unabhängig vom Alter oder mit einem bestimmten Alter erreichen möchte, wie mache ich das, wenn ich zusammengesetzte Schlüssel verwenden möchte? Zum Beispiel können meine Kartenfunktion emittieren sagen ist so etwas wie:Wildcards in Ansichten mit CouchDB?

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

Was mache ich, wenn ich in einem Schlüssel übergeben wollen es verengen, aber immer noch Faktor in die Spieler, die nicht über ein Alter eingegeben, so statt:

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

, etwas zu tun, die eine Wildcard wie dies beinhaltet die Mittelwerte unabhängig vom Alter zu erhalten:

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

Ist es möglich, einen Blick in CouchDB zu schreiben, etwas zu tun, wie t seine? Oder muss ich mehrere Ansichten schreiben und separat verarbeiten?

Danke,
Ben

Antwort

7

Wildcard ist nicht möglich, aber Sie können startkey und endkey angeben:

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

endkey = ["Yankees", "männlich ", {}] sollte besser funktionieren, da {} nach einer beliebigen Nummer sortiert ist. – ordnungswidrig

+0

Wie dedalo und ordnungswidrig darauf hingewiesen haben, können Sie leere Klammern als Platzhalter mit startkey & endkey verwenden, daher ist Ihre Antwort etwas verwirrend, wenn "Wildcard nicht möglich" steht. – Bdoserror

13

Sie können startkey und endkey und nutzen die "Wildcard" {}, ein JavaScript leer angeben Objekt:

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