Mongo数据库保存Map中的数据

2024-04-04

我有以下有效的代码:

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

但是我在地图中拥有 A 部门和 B 部门的数据,如下所示:

Map<Object,Object> map = new HashMap<Object,Object>();
map.put("1", "Department A");
map.put("2", "Department B");

保存这些数据的最佳/最简单方法是什么?有没有办法将地图直接放入 mongo 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);   

更好的是我可以将 DBCursor 对象放回到数据库中。

有任何想法吗?

感谢您的任何帮助或建议!


原生 Java 类型 (int, float, String, Date, Map,等)将自动编码为正确的 BSON 类型,因此您可以使用BasicDBObjectMap直接进入 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实际上没有您想要的结构,因此您需要某种映射到所需的结构。要么使用内置于 java 驱动程序中的基本映射(通过调用您就走在正确的轨道上)BasicDBObject.put, and here http://blog.knuthaugen.no/2010/07/comparing-mongodb-java-frameworks.html还有更多想法),或者使用 Morphia 之类的东西来扩展映射。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongo数据库保存Map中的数据 的相关文章

随机推荐