【问题标题】:how to store array in mongodb?如何在mongodb中存储数组?
【发布时间】:2012-07-30 21:12:35
【问题描述】:

我想使用 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 中保存一个简单的数组?

【问题讨论】:

    标签: java mongodb


    【解决方案1】:

    试试这个

    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。另外,如果您想将它们存储为数组,这也是可能的,但我建议您将它们存储为这样。

    【讨论】:

      【解决方案2】:

      你需要做的就是这个:

      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。

      【讨论】:

      • BasicDBObject 内部知道如何序列化任何 Iterable 实例。(因此 List 被正确序列化并存储在 mongo 中)
      • 我在上面的例子中做同样的事情!!!而且我将您的 sn-p 复制到我的代码中,但它不起作用
      • 那么在您尝试了代码之后,mongo 数据库中的数组是否为空?
      • 嘿,它对我有用...你能发布 find() 方法的输出 JSON。
      猜你喜欢
      • 1970-01-01
      • 2022-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      相关资源
      最近更新 更多