首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CouchDB芒果查询(CouchDB 2.0.1)

CouchDB芒果查询(CouchDB 2.0.1)
EN

Stack Overflow用户
提问于 2017-08-31 08:08:51
回答 1查看 7.6K关注 0票数 3

我试图查询以下数据:

(从:https://dotnetcodr.com/2017/06/21/introduction-to-couchdb-with-net-part-17-starting-with-mango-queries/获得)

代码语言:javascript
复制
{
      "post_code": 35801,
      "country": "United States",
      "country_abbreviation": "US",
      "places": [
        {
          "place_name": "Huntsville",
          "longitude": -86.5673,
          "state": "Alabama",
          "state_abbreviation": "AL",
          "latitude": 34.7269
        }
      ]
    },

    ..........

我的问题是:

  1. 如何在查询中首先包括place_name。

以下javascript没有给出结果:

代码语言:javascript
复制
{
    "selector": {
        "post_code": {"$eq": 35801}
    },
    "fields":["places.placename"]
}

正确的post_code索引:

代码语言:javascript
复制
{
  "index": {
    "fields": [
      "post_code"
    ]
  },
  "type": "json",
  "name": "post-code-index"
}

我确实建立了一个额外的索引如下:

代码语言:javascript
复制
{
  "index": {
    "fields": [
      "places.placename"
    ]
  },
  "type": "json"
}
  1. 如果数据有以下字段怎么办? "old_post_code_numbers": [12345, 67890, ......]

或者:

  1. 如果数据有以下字段怎么办? “地点”:{ "place_name":“亨茨维尔”,“经度”:-86.5673,“国家”:“阿拉巴马”,"state_abbreviation":"AL",“纬度”:34.7269 }

JSON有这么多的表单,我很难理解这种查询所需的javascript背后的原则。我知道这很简单。一定很简单。

非常感谢任何我应该/可以访问的指导或网站。

编辑:

我设法在一个在线javascript测试站点上完成了下面的工作,但我仍然无法在CouchDB芒果中使用它。当然,这在CouchDB中是可能的。?

代码语言:javascript
复制
var xxx=
     {
      "post_code": 82941,
      "country": "United States",
      "country_abbreviation": "US",
      "places": [
        {
          "place_name": "Pinedale",
          "longitude": -109.8561,
          "state": "Wyoming",
          "state_abbreviation": "WY",
          "latitude": 42.8543
        }]
 }

console.log(xxx.places[0].place_name);
EN

回答 1

Stack Overflow用户

发布于 2017-09-04 09:14:08

我的问题第1部分(基于this question的答案)得到了如下结果:

我的索引:

代码语言:javascript
复制
{
"type": "json",
 "def": {
  "fields": [
   {
    "places.0.place_name": "asc"
   }
  ]
 }
}

我的问题是:

代码语言:javascript
复制
{
  "selector": {
    "places.0.place_name": {
        "$gte": null
      }

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

结果:

代码语言:javascript
复制
{"docs":[
{"_id":"254b9a8c7a46934363076cc3d9034082","places":{"0":{"place_name":"Aberdeen"}}},
{"_id":"254b9a8c7a46934363076cc3d9037559","places":{"0":{"place_name":"Altavista"}}},
{"_id":"254b9a8c7a46934363076cc3d900e4d2","places":{"0":{"place_name":"Anchorage"}}},
{"_id":"254b9a8c7a46934363076cc3d900f3b9","places":{"0":{"place_name":"Anchorage"}}},
{"_id":"254b9a8c7a46934363076cc3d902c738","places":{"0":{"place_name":"Ashland"}}},
{"_id":"254b9a8c7a46934363076cc3d901a2f2","places":{"0":{"place_name":"Atlanta"}}},
{"_id":"254b9a8c7a46934363076cc3d901a374","places":{"0":{"place_name":"Atlanta"}}} 
.................

在本例中,我省略了"post_code": {"$eq": 35801},但是可以添加它,而不会出现错误。

part3:

索引:

代码语言:javascript
复制
{
  "index": {
    "fields": [
      {
        "places.place_name": "asc"
      }
    ]
  },
  "type": "json"
}

查询:

代码语言:javascript
复制
{
  "selector": {
    "places.place_name": {
        "$gte": null
      }

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

Result:

{"docs":[
{"places":{"place_name":"Anchorage"}},
{"places":{"place_name":"Anchorage"}},
{"places":{"place_name":"Huntsville"}},
{"places":{"place_name":"Huntsville"}},
{"places":{"place_name":"Phoenix"}},
{"places":{"place_name":"Phoenix"}}
]}

第2部分:

索引:

代码语言:javascript
复制
{
  "index": {
    "fields": [
      {
        "old_post_code_numbers": "asc"
      }
    ]
  },
  "type": "json"
}

查询:

代码语言:javascript
复制
{
  "selector": {
    "old_post_code_numbers": {
        "$gte": null
      }

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

结果:

代码语言:javascript
复制
{"docs":[
{"places":{"place_name":"Huntsville"},"old_post_code_numbers":[12345,67890]},
{"places":{"place_name":"Huntsville"},"old_post_code_numbers":[12345,67890]},
{"places":{"place_name":"Anchorage"},"old_post_code_numbers":[12345,67890]},
{"places":{"place_name":"Anchorage"},"old_post_code_numbers":[12345,67890]},
{"places":{"place_name":"Phoenix"},"old_post_code_numbers":[12345,67890]},
{"places":{"place_name":"Phoenix"},"old_post_code_numbers":[12345,67890]}
]}

最后一个使用:"old_post_code_numbers.0"的示例给出了:

代码语言:javascript
复制
{"docs":[
{"places":{"place_name":"Huntsville"},"old_post_code_numbers":{"0":12345}},
{"places":{"place_name":"Huntsville"},"old_post_code_numbers":{"0":12345}},
{"places":{"place_name":"Anchorage"},"old_post_code_numbers":{"0":12345}},
{"places":{"place_name":"Anchorage"},"old_post_code_numbers":{"0":12345}},
{"places":{"place_name":"Phoenix"},"old_post_code_numbers":{"0":12345}},
{"places":{"place_name":"Phoenix"},"old_post_code_numbers":{"0":12345}}
]}

如有任何意见,我将不胜感激。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45976416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档