一、为MongoDB设置用户名和密码
MongoDB中验证用户和密码的条件:
1. 服务器启动的时候打开授权认证,即修改MongoDB的配置文件mongodb.conf,增auth = true
# 设置数据目录的路径 dbpath = E:programsmongodb-4.0.8db # 设置日志信息的文件路径(需要写日志文件时,取消注释) # logpath = E:programsmongodb-4.0.8logmongodb.log # 打开日志输出操作(需要写日志文件时,取消注释) # logappend = true # 需要用户验证;不需要用户时使用:noauth = true auth = true port = 27001
启动mongodb sever
mongod -f E:programsmongodb-4.0.8mongodb.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
之后,可以看到已添加mongodb-driver包
2. Java操作Mongodb示例
package com.mongodb.demo; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.result.DeleteResult; import com.mongodb.client.result.UpdateResult; import org.bson.Document; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; public class Mongo3DemoJ { public static void main(String[] args){ // 定义连接的URI地址 MongoClientURI uri = new MongoClientURI("mongodb://zs:1@localhost:27001/zs"); MongoClient client = new MongoClient(uri); // 获取数据库 MongoDatabase db = client.getDatabase("zs"); // 获取集合(表) MongoCollection col = db.getCollection("stucol"); // 删除表 col.drop(); // 插入数据 List<Document> all = new ArrayList<Document>(); for(int x =0; x<100; x++){ Document doc = new Document(); doc.append("sid",x); doc.append("name","姓名 - " + x); if (x%2 == 0) doc.append("sex","男"); else doc.append("sex","女"); all.add(doc); } // 插入多条数据 col.insertMany(all); // 获取记录条数 System.out.println("已插入记录条数:" + db.getCollection("stucol").countDocuments()); //查询全部数据 System.out.println("查询全部学生姓名:"); MongoCursor<Document> cursor = col.find().iterator(); while(cursor.hasNext()){ // 全部查询列 // System.out.println(cursor.next()); // 查询姓名 System.out.println(cursor.next().get("name")); } // 设置查询条件 BasicDBObject cond = new BasicDBObject(); // 查询条件为编号大于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 = new BasicDBObject(); 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 = new BasicDBObject(); 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<BasicDBObject> allB = new ArrayList<BasicDBObject>(); 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