Primero:
clave = [ "US"] no funcionará en una matriz clave [ "US", "NY"], porque estás en busca de una llave que es exacto [ "de EE.UU. "]. En su lugar, usted tiene que utilizar
startkey=["US"]&endkey=["US",{}]
entonces esas llaves están en el conjunto de resultados:
["DE","Bavaria","Munich"] <---- NO ! "DE" is out of Range of startkey
["US","FL","Miami"] <---- YES, starts with "US"
["US","NY","New York"] <---- YES, starts with "US"
["VE","XX","Vencuela City"] <---- NO ! "VE" is out of Range of endkey
También trabajo:
startkey=["US","FL"]&endkey=["US","FL",{}]
resultado:
["DE","Bavaria","Munich"] <---- NO ! "DE" is out of Range of startkey
["US","FL","Miami"] <---- YES, starts with "US","FL"
["US","NY","New York"] <---- NO, "US","NY" is out of Range of endkey
["VE","XX","Vencuela City"] <---- NO ! "VE" is out of Range of endkey
Segundo: No se puede tener espacios en blanco en el lado izquierdo .. lo que tiene que escribir más emite: (que no tiene que emitir el segundo y tercer elemento de la matriz, si no es necesario consultarlo)
vista "byStateCityCountry":
emit([doc.address.state, doc.address.city,address.country], doc);
vista "byCityStateCountry":
emit([address.city,doc.address.state, doc.address.country], doc);
de sólo hay que poner una bandera en el primer lugar para determinar el tipo de consulta, por lo que se puede hacer todo en uno vista:
emit([1,address.country,doc.address.state, doc.address.city], doc);
emit([2,doc.address.state, doc.address.city,address.country], doc);
emit([3,address.city,doc.address.state, doc.address.country], doc);
Uso:
?startkey=[1,"US"]&endkey=[1,"US",{}]
?startkey=[2,"FL"]&endkey=[2,"FL",{}]
?startkey=[3,"Miami"]&endkey=[3,"Miami",{}]
Nota: "Usted no puede tener espacios en blanco en el lado izquierdo ..." - Creo que lo contrario es cierto si usted ha descendente = true – Matt
Sé que esto es viejo, pero También debe tenerse en cuenta que si su conjunto de teclas tiene muchos elementos, se vuelve más complejo. suponiendo los datos siguientes en la vista con estas teclas: 'startkey == [a, 11] y endkey == [c, 11]:' ' [a, 10], [a, 11] < - startkey, [a, 12], [b, 10], [b, 11], [b, 12], [c, 10], [c, 11] <- endkey, [c, 12] ' (Se devolverá todo entre la tecla de inicio y la tecla de finalización). – AdriVelaz