CouchDb view - введите список - PullRequest
1 голос
/ 12 марта 2012

Я хочу запросить CouchDB, и у меня есть особая потребность: мой запрос должен возвращать поле имени документов, соответствующее этому условию: идентификатор равен или содержится в поданном документе (список). Например, выходные данные поля следующие:

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

Я хочу получить все документы, например, в поле их вывода "doc_s102". Я написал вид в проектной документации:

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

но это представление работает только тогда, когда у меня есть уникальное значение в поле вывода. Как я могу решить этот запрос?

Спасибо!

1 Ответ

2 голосов
/ 12 марта 2012

Вы должны перебрать массив:

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

убедитесь, что вывод всегда является массивом (по крайней мере, [])

.. и, конечно же, используйте ключ = "xx" вместо ключа = ["xxx"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...