2012-12-21 5 views
0

j'ai une vue qui émet des valeurs commeComment obtenir plusieurs clés dans CouchDB le tri par date

function(doc) { 
var d = new Date(doc.created_date); 
emit([d,doc.unique_id],doc); 
} 

Ici, je dois obtenir plusieurs Unique_ID est dans une requête. donc j'utilise Keys = ["unique_id1", "unique_id1"] pour obtenir l'id .. mais j'ai besoin qu'ils soient triés par date et aussi obtenir les uniques_id. Si je demande comme mentionné ci-dessus je ne reçois aucun résultat de DB.Mais si je change la vue comme ci-dessous et l'interroge je reçois des résultats correctement mais pas triés par date.

function(doc) { 
emit(doc.unique_id,doc); 
} 

Quelqu'un pourrait-il me suggérer comment obtenir les deux dans une seule requête ????

Select * from db where unique_id in {"1","3"} order by date 

C'est ce que je dois en CouchDB

Répondre

0

Vous ne pouvez pas faire cela. Dans CouchDB, vous pouvez soit interroger par une clé unique ou un ensemble de clés, soit vous pouvez faire une requête pour une plage. Donc, si vous voulez interroger par un ensemble d'ID uniques sans avoir à spécifier leur date de création dans la requête, vous ne pouvez pas avoir la date de création dans la clé, et donc CouchDB ne peut pas commander par date de création pour vous. Dans ce cas, vous pouvez utiliser une clé ID unique et trier les résultats par created_date côté client (c'est-à-dire après l'interrogation). L'alternative est de spécifier une clé incluant [unique_id, created_date], mais dans ce cas vous ne pouvez pas interroger [1, *] et [3, *] sans inclure [2, *] (qui vous pouvez à nouveau filtrer après interrogation, côté client).

+0

Nous vous remercions de votre aide. En fait, j'ai besoin que les docs soient triés en fonction de Created_date seulement ... mais j'ai aussi besoin d'id uniques avec. J'ai donc besoin de savoir comment passer les clés pour obtenir ce travail .. ??? – Ramesh

+0

Vous devez probablement utiliser une clé unique_id uniquement (c'est-à-dire votre deuxième fonction de visualisation), puis trier les résultats dans votre code client. – djc

+0

C'est le problème que j'ai ... J'ai besoin que les docs soient triés du côté du serveur lui-même puisque j'utilise la pagination. de sorte que je ne peux pas prendre de docs au client et le trier car il me donnera des résultats non ordonnés .. – Ramesh