我想创建一个学生数据库,其中包含有关学生的详细信息 - 身份证,姓名,地址,成绩单,电话等。 我创建了一个这样的结构:
{
"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的学生......
非常感谢您的帮助。
答案 0 :(得分: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]