2010-09-07 7 views
7

Est-il possible d'utiliser des caractères génériques dans les vues de CouchDB? Par exemple, disons que j'ai une base de données qui a des équipes, l'âge des joueurs, les moyennes des joueurs et le sexe des joueurs. Cependant, l'âge des joueurs peut ne pas être connu - ils pourraient être de la République dominicaine ou autre. Donc, je veux utiliser une vue avec une fonction de carte qui peut accepter de ne pas avoir l'âge du joueur. Si je veux obtenir le joueur avec la moyenne la plus élevée dans une équipe indépendamment de l'âge ou avec un âge spécifique, comment puis-je faire si je veux utiliser des clés composées? Par exemple, permet de dire que ma carte est fonction émette quelque chose comme:Caractères génériques dans les vues avec CouchDB?

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

Que dois-je faire si je veux passer une clé pour le réduire, mais encore le facteur dans les joueurs qui n'ont pas d'âge entrée, donc au lieu de:

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

faire quelque chose qui intègre un caractère générique tel que celui pour obtenir les moyennes quel que soit l'âge:

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

Est-il possible d'écrire une vue en CouchDB faire quelque chose comme t le sien? Ou dois-je écrire plusieurs vues et les traiter séparément?

Merci,
Ben

Répondre

7

Wildcard est impossible, mais vous pouvez spécifier startkey et endkey:

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

endkey = ["Yankees", "mâle ", {}] devrait mieux fonctionner car {} est trié après n'importe quel nombre. – ordnungswidrig

+0

Comme le soulignent dedalo et ordnungswidrig, vous pouvez utiliser des accolades vides comme caractère générique avec startkey & endkey, donc votre réponse est un peu confuse quand elle dit "wildcard n'est pas possible". – Bdoserror

13

Vous pouvez spécifier startkey et endkey et utiliser le "joker" {}, un JavaScript vide objet:

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