数组中的CouchDB字段查询

时间:2018-12-06 13:02:55

标签: json mongodb couchdb hyperledger-fabric couchdb-2.0

假设我要查询美国境内的所有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 :(得分:1)

对于这种查询,您应该使用视图。

您可以创建一个映射以下键的视图:[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']