2017-08-22 4 views
0

Je suis nouveau sur nosql et vues. Je me demande si quelqu'un pourrait me montrer comment construire un index tel qu'il retournera tous les différents documents qui appliquent plusieurs clés différentes. Un exemple est ci-dessous.Construire vue couchbdb pour indexer tous les documents dont l'ID commence par divers trois ou quatre caractères?

J'ai beaucoup de documents qui ont toutes la convention de nommage comme suit:

AABA_August-11-2017_2017-06-29_10 
BBY_August-11-2017_2017-06-29_10 
CECO_January-19-2018_2017-06-08_19 
GEL_December-15-2017_2017-06-08_1 
Etc.. 

Je voudrais une vue telle que je pourrais interroger sur « commence par BBY », par exemple. Et il retournerait tous les documents qui commencent par BBY. Peut-être même "BBY_December", "BBY_August" etc.

Vous vous demandez si c'est possible et à quoi cela ressemblerait. J'utilise CouchDB qui utilise Mango pour construire des index. Si quelqu'un pouvait simplement me pointer dans la bonne direction, cela aiderait aussi.

Merci

Répondre

1

Vous pouvez écrire un tel point de vue comme celui-ci:

function(doc) { 
    var docId = doc._id; 
    var p = docId.substring(0, 2); // Or however many chars you want 
    if (p === 'BBY') emit(doc._id, doc); // Or whatever kind of key you want 
} 

Et puis écrire des vues similaires pour les préfixes alternatifs. Vous pouvez également utiliser des paramètres de requête similaires au point de terminaison _all_docs avec des vues (http://docs.couchdb.org/en/2.0.0/api/ddoc/views.html).

Je pense que le seul avantage d'utiliser une vue au lieu de ce que vous avez fait est que vous pouvez filtrer les champs inutiles, faire des transformations de base, etc.

Compte tenu des similitudes entre la récupération de _all_docs vs d'une vue, il semble que le point de terminaison _all_docs est simplement un index similaire à une vue personnalisée. Mais je ne suis pas sûr à ce sujet.

Vous ne savez pas comment utiliser Mango pour faire de même.

+0

Gotcha. Merci beaucoup. Je vais utiliser cela dans le futur! – mobone

0

Ma convention de dénomination actuelle ne nécessitait pas de nouvel index. Je futon pour trouver:

ip:port/DB/_all_docs?inclusive_end=true&start_key="BBY_Aug"&end_key="BBY_Auh"