当前位置:  开发笔记 > 编程语言 > 正文

Mongo数据库从Map保存数据

如何解决《Mongo数据库从Map保存数据》经验,为你挑选了1个好方法。

我有下面的代码有效:

if (aDBCursor.hasNext()) {
    DBObject aDbObject = aDBCursor.next();
    aDbObject.put("title", "Test Title");
    ArrayList department = 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 map = new HashMap();
map.put("1", "Department A");
map.put("2", "Department B");

保存这些数据的最佳/最简单方法是什么?有没有办法将地图直接放入mongo DB?或者我是否必须在地图上循环?

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

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

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

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

有任何想法吗?

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



1> jtoberon..:

本地Java类型(int,float,String,Date,Map,等)将得到自动编码,以正确的BSON类型,所以你可以使用一个BasicDBObjectMap直入蒙戈集合:

// you probably want to be more specific with your generics than Object!
Map map = new HashMap();
map.put("1", "Department A");
map.put("2", "Department B");
collection.insert(new BasicDBObject(map));

但是,看起来您Map实际上并没有所需的结构,因此您需要某种映射到所需的结构.要么使用内置在java驱动程序中的基本映射(通过调用你在正确的轨道上BasicDBObject.put,这里有一些更多的想法),或使用像Morphia这样的扩展映射.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有