我想使用java在mongoDB集合中存储一个简单的纬度,经度数组,我使用下面的代码,但我的“loc”数组总是为空:
BasicDBObject doc = new BasicDBObject();
//doc.put("key " , r.getKey());
doc.put("category" , r.getKey());
doc.put("type" , r.getValue());
BasicDBObject latlon = new BasicDBObject();
ArrayList<Float> aLatLong = new ArrayList<Float>();
{
Float fLat = Float.parseFloat(r.getLatitude());
Float fLon = Float.parseFloat(r.getLongitude());
aLatLong.add(fLat);
aLatLong.add(fLon);
latlon.put("lat" , fLat);
latlon.put("lon" , fLon);
}
doc.put( "loc" , aLatLong);
但是当我根本不使用ArrayList并尝试将latlon存储到“loc”时,它会向我显示数据但不再是数组。
如何在mongoDB中保存一个简单的数组?
答案 0 :(得分:3)
试试这个
BasicDBObject doc = new BasicDBObject();
//doc.put("key " , r.getKey());
doc.put("category" , r.getKey());
doc.put("type" , r.getValue());
java.util.Map<String,Float> latLongMap = new java.util.HashMap<String,Float>();
latLongMap.put("lat" , Float.parseFloat(r.getLatitude());
latLongMap.put("lon" , Float.parseFloat(r.getLongitude());
doc.put( "location" , latLongMap);
这将存储一个lat-long的json。此外,如果你想将它们存储为数组,这也是可能的,但我建议你将它们存储为。
答案 1 :(得分:1)
您需要做的就是:
BasicDBObject doc = new BasicDBObject();
doc.put("category" , r.getKey());
doc.put("type" , r.getValue());
List<Float> aLatLong = new ArrayList<Float>();
Float fLat = Float.parseFloat(r.getLatitude());
Float fLon = Float.parseFloat(r.getLongitude());
aLatLong.add(fLat);
aLatLong.add(fLon);
doc.put( "loc" , aLatLong);
现在使用mongodb的insert方法来保存DBObject。