开发者社区> 问答> 正文

简单使用 Java 操作 MongoDB

要使用Java操作MongoDB的话,首先下载一个驱动包,将包导入后。具体代码如何写。

展开
收起
落地花开啦 2016-02-18 15:34:28 2030 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    首先介绍一下比较常用的几个类
    Mongo:连接服务器,执行一些数据库操作的选项,如新建立一个数据库等
    DB:对应一个数据库,可以用来建立集合等操作
    DBCollection:对应一个集合(类似表),可能是我们用得最多的,可以添加删除记录等
    DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,因为是key-value的数据结构,所以用起来其实和HashMap是基本一致的
    DBCursor:用来遍历取得的数据,实现了Iterable和Iterator
    代码如下:

    import com.mongodb.*;
     
    public class Main {
        public static void main(String[] args) {
            try{
                Mongo m = new Mongo("127.0.0.1");
                //选择数据库,如果没有这个数据库的话,会自动建立
                DB db = m.getDB("mongo");
                //列出所有数据库名,不过发现,如果数据库里面是没有数据的话,并不会被列出来
                System.out.println("数据库列表:"+m.getDatabaseNames());
     
                //建立一个集合,和数据库一样,如果没有,会自动建立
                DBCollection col = db.getCollection("col");
                //列出所有集合名,和数据库一样,如果集合里面是没有数据的话,并不会被列出来
                System.out.println("当前数据库下的集合列表:"+db.getCollectionNames());
     
                //建立一个数据项,重复执行会多次添加一样的数据
                BasicDBObject val = new BasicDBObject();
                val.put("name", "凤姐");
                col.save(val);
                //保存的数据为
                //{ "_id" : "4b8de2f3053068a371e870c0" , "name" : "凤姐"}
                //_id是系统自动帮加上的,全局唯一
                //多次加入一样的数据时,_id都是不一样的
     
                //取得所有数据并打印出来
                DBCursor ite = col.find();
                while(ite.hasNext())
                {
                    System.out.println(ite.next());
                }
            }catch(Exception error)
            {
                error.printStackTrace();
            }
        }
    }

    更新操作

    import com.mongodb.*;
     
    public class Main {
        public static void main(String[] args) {
            try{
                Mongo m = new Mongo("127.0.0.1");
                DB db = m.getDB("mongo");
                DBCollection col = db.getCollection("col");
     
                System.out.println("修改前:");
                showData(col);
     
                //查找所有 name=凤姐 的项,并更新
                BasicDBObject old_val = new BasicDBObject(),new_val = new BasicDBObject();
                old_val.put("name", "凤姐无敌");
                new_val.put("name", "凤姐无敌");
                col.update(old_val, new_val);//只会更新一个
                //col.updateMulti(new_val, old_val)不知道怎么回事,这函数不顶用
     
                System.out.println("修改后:");
                showData(col);
            }catch(Exception error)
            {
                error.printStackTrace();
            }
        }
     
        static void showData(DBCollection col)
        {
            DBCursor ite = col.find();
            while(ite.hasNext())
            {
                System.out.println(ite.next());
            }
        }
    }
    2019-07-17 18:44:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载

相关镜像