CouchDB Field Query in Array - PullRequest
       20

CouchDB Field Query in Array

0 голосов
/ 06 декабря 2018

Предположим, я хочу запросить все place_name, которые находятся в Соединенных Штатах.Каким должен быть мой запрос или поля?

Здесь я вставил свой запрос, который дает мне только первый индекс, но я хочу получить все данные.Тогда каким должен быть мой запрос.

{
      "post_code": 35801,
      "country": "United States",
      "country_abbreviation": "US",
      "places": [
        {
          "place_name": "Huntsville",
          "longitude": -86.5673,
          "state": "Alabama",
          "state_abbreviation": "AL",
          "latitude": 34.7269
        },
{
          "place_name": "Huntsville12345",
          "longitude": -86.5673,
          "state": "Alabama",
          "state_abbreviation": "AL",
          "latitude": 34.7269
        }
      ]
    },

Текущий запрос

"selector": {
    "places.0.place_name": {
        "$gte": null
      }

  },
  "fields": [
    "_id",
    "places.0.place_name"
  ],
  "sort": [
    {
      "places.0.place_name": "asc"
    }
  ]
}

1 Ответ

0 голосов
/ 06 декабря 2018

Для этого типа запроса вы должны использовать представления.

Вы можете создать представление, отображающее следующий ключ: [country,place_name]

Функция карты, например:

function(doc){
  if(doc.places){
    for(var i in doc.places){
      emit([doc.country,doc.places[i].place_name);
    }
  }
}

Это позволяет вам запрашивать: список стран и список мест по стране.

Если вы хотите получить список стран, вы можете использовать в своем запросе следующие параметры: group_level=1&group=true

Если вы хотите получить места Соединенных Штатов: startkey=['United states']

...