java 中使用mongodb_Java中使用MongoDB

一、为MongoDB设置用户名和密码

MongoDB中验证用户和密码的条件:

1. 服务器启动的时候打开授权认证,即修改MongoDB的配置文件mongodb.conf,增auth = true

# 设置数据目录的路径

dbpath= E:\programs\mongodb-4.0.8\db

# 设置日志信息的文件路径(需要写日志文件时,取消注释)

# logpath= E:\programs\mongodb-4.0.8\log\mongodb.log

# 打开日志输出操作(需要写日志文件时,取消注释)

# logappend= true# 需要用户验证;不需要用户时使用:noauth= trueauth= trueport= 27001

启动mongodb sever

mongod -f E:\programs\mongodb-4.0.8\mongodb.conf

2. 需要配置用户名和密码

用户名和密码是针对某个数据库的,首先切换到指定的数据库上,比如zs数据库

use zs

创建一个可以读写的角色,用户名为zs,密码为1

db.createUser({"user" : "zs","pwd" : "1","roles" : [{"role" : "readWrite","db" : "zs"}]});

使用用户名和密码登陆mongodb的zs数据库

mongo localhost:27001/zs -u zs -p 1

二、在Java中使用MongoDB,以IDEA为例

1. 先建一个简单的Java工程,并在其中加入MongoDB的driver包

选择“File”菜单中的“Project Structure”菜单,按下图的右图数字顺序,添加mongodb-driver包、bson包和mongodb-driver-core包,新版本的mongodb要依赖上面三个包,注意要保证三个包的版本一致。如果缺少某个包的话,虽然编辑时没有提示错误,但运行时可能出错。

三个包的下载地址:

https://repo1.maven.org/maven2/org/mongodb

https://oss.sonatype.org/content/repositories/releases/org/mongodb

a826549712ea095eb11eb42fcdb7caae.png      

198f7cf2c06dfd952f56ef364865438c.png

之后,可以看到已添加mongodb-driver包

b20dbbd33f269c0e702900cd2375a423.png          

69f582e3a173b4b48a635a27540085f4.png

2. Java操作Mongodb示例

packagecom.mongodb.demo;importcom.mongodb.BasicDBObject;importcom.mongodb.MongoClient;importcom.mongodb.MongoClientURI;importcom.mongodb.client.MongoCollection;importcom.mongodb.client.MongoCursor;importcom.mongodb.client.MongoDatabase;importcom.mongodb.client.result.DeleteResult;importcom.mongodb.client.result.UpdateResult;importorg.bson.Document;importjava.util.ArrayList;importjava.util.List;importjava.util.regex.Pattern;public classMongo3DemoJ {public static voidmain(String[] args){//定义连接的URI地址

MongoClientURI uri = new MongoClientURI("mongodb://zs:1@localhost:27001/zs");

MongoClient client= newMongoClient(uri);//获取数据库

MongoDatabase db = client.getDatabase("zs");//获取集合(表)

MongoCollection col = db.getCollection("stucol");//删除表

col.drop();//插入数据

List all = new ArrayList();for(int x =0; x<100; x++){

Document doc= newDocument();

doc.append("sid",x);

doc.append("name","姓名 - " +x);if (x%2 == 0)

doc.append("sex","男");elsedoc.append("sex","女");

all.add(doc);

}//插入多条数据

col.insertMany(all);//获取记录条数

System.out.println("已插入记录条数:" + db.getCollection("stucol").countDocuments());//查询全部数据

System.out.println("查询全部学生姓名:");

MongoCursor cursor =col.find().iterator();while(cursor.hasNext()){//全部查询列//System.out.println(cursor.next());//查询姓名

System.out.println(cursor.next().get("name"));

}//设置查询条件

BasicDBObject cond = newBasicDBObject();//查询条件为编号大于5,小于10

cond.put("sid", new BasicDBObject("$gt",5).append("$lt",10));

System.out.println("查询编号大于5小于10的全部学生姓名:");//按条件查询数据

cursor =col.find(cond).iterator();while(cursor.hasNext()){//全部查询列//System.out.println(cursor.next());//查询姓名

System.out.println(cursor.next().get("name"));

}//模糊查询,查找名字里带“10”的

Pattern pattern = Pattern.compile("10");//设置查询条件

cond = newBasicDBObject();

cond.put("name", new BasicDBObject("$regex",pattern));//不区分大小写的写法//cond.put("name", new BasicDBObject("$regex",pattern).append("$options","i"));

System.out.println("查询姓名里带10的全部学生姓名:");//按条件查询数据

cursor =col.find(cond).iterator();while(cursor.hasNext()){//查询姓名

System.out.println(cursor.next().get("name"));

}//分页查询//模糊查询,查找名字里带“1”的

pattern = Pattern.compile("1");//设置查询条件

cond = newBasicDBObject();

cond.put("name", new BasicDBObject("$regex",pattern));

System.out.println("查询姓名里带1的6到10个学生姓名:");//按条件查询数据

cursor = col.find(cond).skip(5).limit(5).iterator();while(cursor.hasNext()){//查询姓名

System.out.println(cursor.next().get("name"));

}//更新数据

BasicDBObject condA = new BasicDBObject("sid",0);

BasicDBObject condB= new BasicDBObject("$set",new BasicDBObject("name","SuperMam"));

UpdateResult result=col.updateMany(condA,condB);

System.out.print("已修改记录数");

System.out.println(result.getModifiedCount());//聚类查询//查询条件,按姓别统计人数

condA = new BasicDBObject("$group",new BasicDBObject("_id","$sex").append("count",new BasicDBObject("$sum",1)));

List allB = new ArrayList();

allB.add(condA);

System.out.println("聚类查询,按姓别统计人数");

cursor=col.aggregate(allB).iterator();while(cursor.hasNext()){

Document doc=cursor.next();

System.out.println(doc.getString("_id") + ", " + doc.getInteger("count"));

}//删除数据//查询条件

condA = new BasicDBObject("sid",0);

DeleteResult resultD=col.deleteOne(condA);

System.out.println("删除记录数:" +resultD.getDeletedCount());

client.close();

}

}

李兴华老师MongoDB培训笔记

http://yuedu.163.com/news_reader/#/~/source?id=d0b66e2ed0f84f8f8f4ea1a357964f36_1&cid=2cc98f9ffa0e4650bf9d0dc166f1a0e4_1

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值