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

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

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

# 设置数据目录的路径
dbpath = E:\programs\mongodb-4.0.\db # 设置日志信息的文件路径(需要写日志文件时,取消注释)
# logpath = E:\programs\mongodb-4.0.\log\mongodb.log # 打开日志输出操作(需要写日志文件时,取消注释)
# logappend = true # 需要用户验证;不需要用户时使用:noauth = true
auth = true port =

启动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

      

之后,可以看到已添加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

Java中使用MongoDB的更多相关文章

  1. 在java中使用MongoDB数据库

    Java 安装 要想在 Java 程序中使用 MongoDB,需要先确定是否安装了 MongoDB JDBC 驱动,并且要在机器上安装了 Java.查看 Java 教程来确保在机器上安装好 Java. ...

  2. java中使用mongodb的几种方式

    最近有时间看了一下mongodb,因为mongodb更容易扩展所以考虑使用mongodb来保存数据. 首先下载安装mongodb,这是很简单的,装好后使用mongod命令就可以启动数据库.正式部署的话 ...

  3. Java中实现MongoDB自增主键ID

    1.了解MongoDB的ObjectId        MongoDB的文档固定是使用“_id”作为主键的,它可以是任何类型的,默认是个ObjectId对象(在Java中则表现为字符串),那么为什么M ...

  4. Java中获取MongoDB连接的方法

    首先是所需jar包,Maven中的配置如下: <dependency> <groupId>org.mongodb</groupId> <artifactId& ...

  5. 【MongoDB学习之五】Java中使用MongoDB

    环境 MongoDB 3.0 CentOS6.5_x64 相关jar:mongo-java-driver-3.0.0.jar package com.mongodb; import java.util ...

  6. Java开发--操作MongoDB

    http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们 ...

  7. java下执行mongodb

    1.1连单台mongodb Mongo mg = newMongo();//默认连本机127.0.0.1  端口为27017 Mongo mg = newMongo(ip);//可以指定ip 端口默认 ...

  8. Java中遍历实体类(处理MongoDB)

    在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...

  9. MongoDB在java中的使用

    在一年前就开始在项目中使用Mongodb作为爬虫(crawler)待下载URL.下载成功URL等的存储库,最近对项目进行版本更新,根据Mongodb的最近升级情况,也对项目中的Mongodb进行了相关 ...

随机推荐

  1. python 解析命令行

    python中的命令行解析最简单最原始的方法是使用sys.argv来实现,更高级的可以使用argparse这个模块.argparse从python 2.7开始被加入到标准库中,所以如果你的python ...

  2. Python importlib(动态导入模块)

    使用 Python importlib(动态导入模块) 可以将字符串型的模块名导入 示例: import importlib module = 'module name' # 字符串型模块名 test ...

  3. VCenter6.0.0的安装过程

    背景和实验环境介绍 操作系统环境:windows 2008R2 中文企业版 前期环境配置 配置IP信息,把DNS改成自己的IP 修改主机名和后缀 安装和配置DNS服务 Vcenter 添加dns角色 ...

  4. Hbase数据库

        1.简介 HBase从诞生至今将近10年,在apache基金会的孵化下,已经变成一个非常成熟的项目,也有许多不同的公司支持着许多不同的分支版本,如cloudra等等. HBase不同于一般的关 ...

  5. OpenStack搭建Q版在控制节点上的环境准备(step2)

    接下来是只需要在控制节点上准备的环境配置.其中虽然NTP服务需要在所有节点上都安装,但NTP服务在控制节点和其他的节点上的配置是不同的,所以不把它放在step1的公共配置中进行准备.如下: 1.配置N ...

  6. RTP实时传输协议

    RTP协议是包括一对协议:RTP和RTCP. RTP传输数据,RTCP传输控制信息. 一般基于UDP,RTP使用偶数端口,RTCP使用下一个奇数端口. 层次关系: APP -> RTP -> ...

  7. Nginx reverse proxy NSQAdmin

    以下配置只针对nsqadmin v1.1.0 (built w/go1.10.3)版本 ## The default server# server {    listen       80 defau ...

  8. Javascript小问题

    1.原生对象克隆 var clone = function(obj) { var o; if (typeof obj == "object") { if (obj === null ...

  9. Python【每日一问】15

    问:简述with方法打开处理文件实际上做了哪些工作 答: filename= "test.txt" with open(filename, "w", encod ...

  10. 常用内置函数_eval_exce

    内置函数 abs 绝对值函数 res = abs(-19) print(res) round 四舍五入(n.5时, 奇数进偶数不进) sum 计算序列的和(元素是数字类型) listvar = (1, ...