首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从云文档中提取嵌套值

从云文档中提取嵌套值
EN

Stack Overflow用户
提问于 2015-12-21 10:02:17
回答 1查看 556关注 0票数 0

在Cloudant (CouchDB)中存在提取值的问题。下面是存储的文档示例。

代码语言:javascript
复制
{
"_id": "d47cd130de736894be5c464c314f1083",
  "_rev": "1-2baf765d6f78bd80b4a604718063c0eb",
  "Name": John,
  "Surname": "Doe",
  "ID": "89884600000001936983",
  "Records": [
    {
      "SeqNo": 14776,
      "Reason": 25,
      "DateUTC": "2015-12-01 01:59:35",
      "Fields": [
        {
          "HeartRate": "68",
          "Weight": "75",
        },
        {
          "Eyesight": 20,
        },
        {
          "OtherData": {
            "1": 4217,
            "2": 1179,
            "3": 2588,
            "4": 2488,
            "5": 21
          },
          "FType": 6
        }
      ]
    },
    {
      "SeqNo": 14777,
      "Reason": 25,
      "DateUTC": "2015-12-05 02:00:35",
      "Fields": [
        {
          "HeartRate": "72",
          "Weight": "78",
        },
        {
          "Eyesight": 20,
        },
        {
          "OtherData": {
            "1": 4217,
            "2": 1198,
            "3": 2588,
            "4": 2488,
            "5": 21
          },
          "FType": 6
        }
      ]
    }
  ]
}

数据库包含多个文档,每个文档包含以序列号表示的多个数据记录。每个文档的数据记录(序列)数可以是1~无穷远的任意值。其中一个视图应该显示一个数组,该数组包含从所有与John相关的文档中提取的所有值。目前,数据库只包含与John相关的文档,但这将在将来发生变化。

当前的视图文档如下:

代码语言:javascript
复制
function(doc) {
  if(doc.Records) {
    doc.Records.forEach(function(SeqNo) {
      emit(SeqNo,null);
    });
  }
}

这为每个数据记录(每个序列的单独结果)提供了以下结果:

代码语言:javascript
复制
{
"id": "d47cd130de736894be5c464c314f1083",
 "key": {
  "SeqNo": 14776,
  "Reason": 25,
  "DateUTC": "2015-12-01 01:59:35",
  "Fields": [
   {
     "HeartRate": "68",
     "Weight": "75",
   },
   {
    "Eyesight": 20,
   },
   {
    "OtherData": {
     "1": 4217,
     "2": 1179,
     "3": 2588,
     "4": 2488,
     "5": 21
    },
    "FType": 6
   }
  ]
 },
 "value": null,
 "_id": "d47cd130ce736894be5c464c314f1083"
}

第一步是确保在构造数组之前可以提取所需的值。

Doc.SeqNo(SeqNo,null)并不只提供序列号,我的问题是:

如何只提取序列号? 然后如何根据结果构建数组? 当我想提取OtherData.1值时,这种情况会改变吗?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-21 10:17:59

.forEach正在返回单独的记录,我认为这个视图需要的map函数是

代码语言:javascript
复制
function(doc) {
  if(doc.Records) {
    doc.Records.forEach(function(Record) {
      emit(Record.SeqNo, null);
    });
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34393065

复制
相关文章

相似问题

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