0

我想创建一个学生数据库,其中包含有关学生的详细信息 - id、姓名、地址、成绩单、电话等。我创建了一个这样的结构:

{
 "ssn" : "121-23-1232", 
 "name": "Grace Johnson",
 "address": [
    {"Street Address": "190 Pinehill place", 
    "City": "Belmont",
    "State": "CA",
    "ZipCode": "08250"
    }
    ],
 "phone": "605-123-1111",
 "transcript": [
    {"Math":"B",
    "English":"A",
    "Physics": "B",
    "Psychology": "C",
    "Physical Education": "A"
    }
    ]
 }

但是,如果我希望能够访问居住在特定城市的学生,这种创建方法是否正确..我将如何编写它?还假设我想让所有获得物理 A 的学生......

非常感谢您的帮助。

4

1 回答 1

0

如果您想输出居住在特定城市的所有学生,您的地图函数可以如下所示:

function(doc){
  if(doc.address){
    emit([doc.address.city, doc.address.state], doc.name)
  }
}

这会将居住在城市中的所有学生聚集在一起。因此,您可以执行此 GET 请求来查找居住在特定城市的学生:

GET /<viewUrl?start_key=[Belmont,CA]

成绩的地图将是相似的:

function(doc){
  if(doc.transcript){
    for(var i = 0; i < doc.transcript.length; i++){
      var classes = Object.keys(doc.transcript[i]);
      for(var j = 0; j < classes.length; j++){
        var class = classes[j];
        emit([class, doc.transcript[j][class]], doc.name)
      }
    }
  }
}

该地图将发出学生的所有课程及其成绩。所以它查询它,你可以这样做:

GET /<viewUrl>?key=[Physics,A]
于 2014-02-20T20:44:32.017 回答