2

I Want to query CouchDB and I have a specific need : my query should return the name field of documents corresponding to this condition : the id is equal or contained in a document filed (a list). For example, the field output is the following :

"output": [
       "doc_s100",
       "doc_s101",
       "doc_s102",
       "doc_s103",
   ],

I want to get all the documents having in their output field "doc_s102" for example. I wrote a view in a design document :

"backward_by_docid": {
           "map": "function(doc) {if(doc.output) emit(doc.output, doc.name)}"
       }

but this view works only when I have a unique value in the output field. How can I resolve this query ?

Thanks !

user162284
  • 51
  • 1
  • 4

1 Answers1

4

you have to iterate over the array:

  if(doc.output) {
      for (var curOutput in doc.output) {
        emit (doc.output[curOutput],doc.name);
      }
  }

make sure that output always is an array (at least [])

.. and, of course use key="xx" instead key=["xxx"]

okurow
  • 969
  • 10
  • 6