Java Mongo数据库从地图保存数据

Java Mongo数据库从地图保存数据,java,mongodb,map,mongo-java,Java,Mongodb,Map,Mongo Java,我的代码如下: if (aDBCursor.hasNext()) { DBObject aDbObject = aDBCursor.next(); aDbObject.put("title", "Test Title"); ArrayList<DBObject> department = new ArrayList<DBObject>(); DBObject nested1 = new BasicDBObject(); neste

我的代码如下:

if (aDBCursor.hasNext()) {
    DBObject aDbObject = aDBCursor.next();
    aDbObject.put("title", "Test Title");
    ArrayList<DBObject> department = new ArrayList<DBObject>();

    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);
}
if(aDBCursor.hasNext()){
DBObject aDbObject=aDBCursor.next();
aDbObject.put(“标题”、“测试标题”);
ArrayList department=新建ArrayList();
DBObject nested1=新的BasicDBObject();
嵌套1.放置(“名称”、“部门A”);
嵌套1.放置(“id”,1);
部门添加(嵌套1);
DBObject nested2=新的BasicDBObject();
嵌套2.放置(“名称”、“部门B”);
嵌套2.放置(“id”,2);
部门添加(嵌套2);
aDbObject.put(“部门”,部门);
collection.save(aDbObject);
}
但是,我在地图中有A部门和B部门的数据,如:

Map<Object,Object> map = new HashMap<Object,Object>();
map.put("1", "Department A");
map.put("2", "Department B");
Map Map=newhashmap();
地图放置(“1”,“部门A”);
地图放置(“2”,“B部门”);
保存此数据的最佳/最简单方法是什么?有没有办法把地图直接放到mongo数据库中?还是我得在地图上转一圈

进入地图的数据已经从数据库中获取,如下所示:

String[] values = req.getParameterValues("departments");
Map<Object,Object> map = new HashMap<Object,Object>();

DBCollection collection = database.getCollection("Departments");
BasicDBObject query = new BasicDBObject();
query.put("id", new BasicDBObject("$in", values));
DBCursor cursor = collection.find(query);   
String[]values=req.getParameterValues(“部门”);
Map Map=newhashmap();
DBCollection=database.getCollection(“部门”);
BasicDBObject查询=新建BasicDBObject();
put(“id”,新的BasicDBObject(“$in”,value));
DBCursor=collection.find(查询);
更好的是,我可以将DBCursor对象放回数据库中

有什么想法吗

谢谢你的帮助和建议

本地Java类型(
int
float
String
Date
Map,
等)将自动编码到正确的BSON类型,因此您可以使用
BasicDBObject
映射直接放入mongo集合:

// you probably want to be more specific with your generics than Object!
Map<Object,Object> map = new HashMap<Object,Object>();
map.put("1", "Department A");
map.put("2", "Department B");
collection.insert(new BasicDBObject(map));
//您可能希望泛型比对象更具体!
Map Map=newhashmap();
地图放置(“1”,“部门A”);
地图放置(“2”,“B部门”);
插入(新的基本对象(地图));

但是,看起来您的
映射实际上没有您想要的结构,因此您需要某种映射到所需的结构。可以使用java驱动程序内置的基本映射(通过调用
BasicDBObject.put和其他一些想法,您的做法是正确的),也可以使用类似于Morphia的东西进行扩展映射。

保存此数据的最佳/最简单方法是什么?有没有办法把地图直接放到mongo数据库中?或者我必须在地图上循环
? Map可以通过构造函数本身直接添加到BasicDBObject。这可以直接插入到db中,而无需迭代

Would be even better is I could just put the DBCursor object back into the database.

DBCursor实现了迭代器,所以如果不进行迭代,就不能将其放回db中

String[] values = req.getParameterValues("departments");
Map<Object,Object> map = new HashMap<Object,Object>();

DBCollection collection = database.getCollection("Departments");
BasicDBObject query = new BasicDBObject();
query.put("id", new BasicDBObject("$in", values));
DBCursor cursor = collection.find(query); 



if(aDBCursor.hasNext()){
        DBObject aDbObject=aDBCursor.next();
        aDbObject.put("title", "Test Title");
        aDbObject.put("department", cursor);
        collection.save(aDbObject);
    }
String[]values=req.getParameterValues(“部门”);
Map Map=newhashmap();
DBCollection=database.getCollection(“部门”);
BasicDBObject查询=新建BasicDBObject();
put(“id”,新的BasicDBObject(“$in”,value));
DBCursor=collection.find(查询);
if(aDBCursor.hasNext()){
DBObject aDbObject=aDBCursor.next();
aDbObject.put(“标题”、“测试标题”);
aDbObject.put(“部门”,光标);
collection.save(aDbObject);
}
就这么简单

谢谢你的回复和建议