我有下面的代码有效:
if (aDBCursor.hasNext()) { DBObject aDbObject = aDBCursor.next(); aDbObject.put("title", "Test Title"); ArrayListdepartment = new ArrayList (); DBObject nested1 = new BasicDBObject(); nested1.put("name", "Department A"); nested1.put("id", 1); department.add(nested1); DBObject nested2 = new BasicDBObject(); nested2.put("name", "Department B"); nested2.put("id", 2); department.add(nested2); aDbObject.put("department", department); collection.save(aDbObject); }
但是我在地图中有A部和B部的数据,如:
Map
保存这些数据的最佳/最简单方法是什么?有没有办法将地图直接放入mongo DB?或者我是否必须在地图上循环?
进入地图的数据已经从数据库中获取,如下所示:
String[] values = req.getParameterValues("departments"); Mapmap = new HashMap (); DBCollection collection = database.getCollection("Departments"); BasicDBObject query = new BasicDBObject(); query.put("id", new BasicDBObject("$in", values)); DBCursor cursor = collection.find(query);
更好的是我可以将DBCursor对象放回数据库中.
有任何想法吗?
感谢您的任何帮助或建议!
本地Java类型(int
,float
,String
,Date
,Map,
等)将得到自动编码,以正确的BSON类型,所以你可以使用一个BasicDBObject
把Map
直入蒙戈集合:
// you probably want to be more specific with your generics than Object! Mapmap = new HashMap (); map.put("1", "Department A"); map.put("2", "Department B"); collection.insert(new BasicDBObject(map));
但是,看起来您Map
实际上并没有所需的结构,因此您需要某种映射到所需的结构.要么使用内置在java驱动程序中的基本映射(通过调用你在正确的轨道上BasicDBObject.put
,这里有一些更多的想法),或使用像Morphia这样的扩展映射.