1

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に保存するにはどうすればよいですか?

4

2 に答える 2

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);

これにより、緯度経度の json が保存されます。また、配列として保存することも可能ですが、このように保存することをお勧めします。

于 2012-07-30T12:59:54.447 に答える
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 を保存します。

于 2012-07-30T12:46:35.307 に答える