2013-03-16 5 views
3

J'ai une liste de ces documents dans ma base de données de couchDB.Comment écrire des vues CouchDb?

{ 
    "_id": "9", 
    "_rev": "1-f5a9a0b76c6ae1fe5e20f1a1f9e6f8ba", 
    "Project": "Vaibhava", 
    "Type": "activity", 
    "Name": "Civil_Clearence", 
    "PercentComplete": "", 
    "DateAndTime": "", 
    "SourcePMSId": "1049", 
    "ProgressUpdatedToPMSFlag": "NO", 
    "UserId": "Kundan", 
    "ParentId": "5" 
} 

Comment écrire une fonction d'affichage de sorte que lorsque je passe un doc._id comme clé alors je dois obtenir tous les frères et sœurs de cette doc._id (docs avec ParentId identique à la clé que je l'ai envoyé) ??

+1

Consultez cette page dans le wiki à propos de [Documents liés] (http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Linked_documents) –

Répondre

0

Malheureusement, vous devez chaîner deux fonctions de réduction de mappage pour obtenir ce résultat et cette fonctionnalité n'est pas disponible dans CouchDB. Voir this question pour plus d'informations.

1

Comme indiqué dans une autre réponse, il n'est pas possible de le faire avec une seule requête.

Cependant, vous pouvez effectuer les opérations suivantes à la place:

  1. Définition d'une carte (sans réduction) vue indexée sur ParentID:

    function(o) { 
        if (o.ParentID) { 
        emit(o.ParentID); 
        } 
    } 
    
  2. Envoyer une première demande à votre objet de savoir l'ID de son parent:

    GET /myDatabase/myObject 
    
  3. Puis sen d une demande à votre vue

    GET /myDatabase/_design/myApp/_view/myView/?key="itsParent"&include_docs=true 
    

Avoir plusieurs demandes ne devrait pas causer beaucoup de mal ici, puisque leur nombre (2) est constante. De plus, vous pouvez les cacher derrière une seule requête traitée par NodeJS.

Questions connexes