Couchdb документ / функция

В документе указана следующая информация:

{
  "address": [{
    "Street": "123 xyz", 
    "City": "Belmont"
  }]
}

Как я могу просмотреть названия городов. Это правильно:

function(doc) {
  emit(doc.address.City,null);
}

Возвращается только null, Я хотел увидеть имя "Белмонт". Любая помощь с оценкой.

1 ответ

По вашим данным, address является массивом, поэтому он не имеет City имущество.

Если у вас есть только один адрес в ваших данных:

{
  "address": {
    "Street": "123 xyz", 
    "City": "Belmont"
  }
}

Получение /{database}/_design/{ddoc}/_view/{view} должен вернуть:

{"rows":[
  {"key":"Belmont", "id":"{id}", "value":null}
]}

В качестве примечания, обратите внимание, что вы также можете получить /{database}/_design/{ddoc}/_view/{view}?include_docs=true:

{"rows":[
  {"key":"Belmont", "id":"{id}", "value":null, "doc":{
    "address": {
      "Street": "123 xyz", 
      "City": "Belmont"
    }
  }}
]}

И последнее, но не менее важное: если вам действительно нужны несколько адресов в ваших данных, вы можете отправить их все:

function(o) {
  for each (var a in o.address) {
    emit(a.City);
  }
}
Другие вопросы по тегам