我对温度数据有疑问: 使用mysql我存储温度数据如下:
city_id;city_name;month;min_temperature,max_temperature
123,New York,1,7,9
现在我想转移到mongodb并希望存储面向数据文档 结构现在看起来像这样:
{
"_id" : 20480,
"name": "New York"
"climate" : {
"air" : {
"1" : {
"min" : "1",
"max" : "8"
},
"2" : {
"min" : "2",
"max" : "8"
},
"3" : {
"min" : "3",
"max" : "10"
},
"..."
}
}
}
是否有人对该结构有一些经验或有任何优化这方面的技巧? 这种结构是否有意义,或者这样做会更好:
{
"_id" : 20480,
"name": "New York"
"climate" : {
"air" : {
"january" : {
"min" : "1",
"max" : "8"
},
"february" : {
"min" : "2",
"max" : "8"
},
"march" : {
"min" : "3",
"max" : "10"
},
"..."
}
}
}
任何帮助都会很棒。
答案 0 :(得分:0)
任何一个都会很好。 或者你可以这样:
"air" : [{min:1,max:5},{min:2,max:6}, {min:5,max:15} ... ]
使用数组代替。当然,0 = 1月。
这取决于你是否更多地这样做,气候.air.january或你会做一个循环并做更多:climate.air [0]
答案 1 :(得分:0)
{
"_id" : 20480,
"name": "New York"
"climate" : {
"air" : {
"january" : {
"min" : "1",
"max" : "8"
},
"february" : {
"min" : "2",
"max" : "8"
},
"march" : {
"min" : "3",
"max" : "10"
},
"..."
}
}
}
这在文档中清楚地表明了数据的月份,使用“1”,“2”等可以节省一些磁盘空间,因为mongoDb键会为每条记录重复使用空间。 但是由于你的数据不会是数百万的文件,你可以使用“january”,“february”。您可能希望使用“jan”,“feb”,“mar”来保持键名更短和描述性。
现在,您需要考虑对数据进行何种查询。例如
a)3月份哪个城市有最高气温? b)哪个城市的最高温度在8到12之间?
c)哪个城市全年最高平均最低温度?等您将通过直接查询和正确索引获得一些结果,但可能必须使用map reduce来满足高级数据需求。 希望这会有所帮助。