下载地址:https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.6-signed.msi
下载下来双击安装即可,最新版的数据目录data和日志目录log都在安装路径下,不用配置任何东西,而且在Windows的服务里也会自动安装,
默认是开机自动启动的,可以在服务里将其改为手动启动
只是环境变量没有配置,可以配置一下将Mongo的bin目录配置到系统环境变量的Path中即可【就如下图一样】,当然也可以配置个MONOGO_HOME=D:\Softwares\MongoDB\Server\4.0\,然后在path里%MONOGO_HOME%\bin引用,因为path长度有限制,如果没事就直接放path,简单
然后在命令行使用mongo命令就可以连接Mongo Server,默认主机名localhost和端口27017,可以不用指定
而且会安装一个MongoDB Compass的图形界面管理工具
下面是Java操作MongoDB的CRUD简单示例,每个方法作为单元测试写的,执行完户可以在上面的图形界面里面去检验
原文代码可以不看,安装好MongoDB,启动Mongo服务,直接新建一个Maven工程 ,在pom中依赖Mongo依赖和Junit,Apache Collections,Google Guava就可以了,如下,然后,拷贝下面的代码运行并观察即可
更多例子参考:https://www.cnblogs.com/minsons/articles/7026600.html
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.3</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.10.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.0-jre</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
package cn.cuit.mongodb;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections4.IterableUtils;
import org.apache.commons.collections4.IteratorUtils;
import org.bson.Document;
import org.junit.Test;
import com.google.common.collect.Lists;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class MongoDBCRUD {
public static void main(String args[]) {
/**
* 本实例中 Mongo 数据库无需用户名密码验证。如果你的 Mongo 需要验证用户名及密码,可以使用以下代码:testMongo01方法
*/
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库,指定数据库名称,如果指定的数据库不存在,mongo会自动创建数据库。创建完成后,在Compass里面刷新看不到,但是创建Collection后刷新才会出现
MongoDatabase mongoDatabase = mongoClient.getDatabase("cuitCol");
System.out.println(mongoDatabase.getName());
System.out.println("Connect to database successfully DBName is : " + mongoDatabase.getName());
mongoClient.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
// 安装的Mongo默认没有用户名和密码,需要自己配置,配置用户名和密码参考:https://blog.csdn.net/qq_32502511/article/details/80619277
public void testConnectMongo01() {
try {
// 连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
// ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost", 27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
// MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName",
"password".toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
// 通过连接认证获取MongoDB连接
// MongoClient mongoClient = new MongoClient(addrs, credentials);
// //过时,第二个参数不要用List
MongoClient mongoClient = new MongoClient(addrs, credential, null);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");
System.out.println("Connect to database successfully DBName is " + mongoDatabase.getName());
mongoClient.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
// 使用 com.mongodb.client.MongoDatabase 类中的createCollection()来创建集合
@Test
public void testCreateCollection() {
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("cuitCol");
System.out.println("Connect to database successfully");
mongoDatabase.createCollection("test");
System.out.println("集合创建成功");
mongoClient.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
// 使用com.mongodb.client.MongoDatabase类的 getCollection() 方法来获取一个集合
@Test
public void testGetCollection() {
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("cuitCol");
System.out.println("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection("test");
System.out.println("获取到的Collection是:" + collection.getNamespace());
mongoClient.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
// 使用com.mongodb.client.MongoCollection类的 insertMany() 方法来插入一个文档
@Test
public void testInsertDoc() {
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("cuitCol");
System.out.println("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection("test");
System.out.println("获取到的Collection是:" + collection.getNamespace());
// 插入文档
/**
* 1. 创建文档 org.bson.Document 参数为key-value的格式 2. 创建文档集合List<Document> 3.
* 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用
* mongoCollection.insertOne(Document)
*/
Document document = new Document("title", "MongoDB").append("description", "database").append("likes", 100)
.append("by", "CUIT");
List<Document> documents = new ArrayList<Document>();
documents.add(document);
collection.insertMany(documents);
System.out.println("文档插入成功");
mongoClient.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
// 使用 com.mongodb.client.MongoCollection 类中的 find()
// 方法来获取集合中的所有文档。此方法返回一个游标,所以你需要遍历这个游标
@Test
public void testFind() {
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("cuitCol");
System.out.println("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection("test");
System.out.println("集合 test 选择成功");
// 检索所有文档
/**
* 1. 获取迭代器FindIterable<Document> 2. 获取游标MongoCursor<Document> 3. 通过游标遍历检索出的文档集合
*/
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while (mongoCursor.hasNext()) {
System.out.println(mongoCursor.next());
}
findIterable.iterator().forEachRemaining(System.out::println);
// for (Document document : findIterable) {}
mongoClient.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
// 使用 com.mongodb.client.MongoCollection 类中的 updateMany() 方法来更新集合中的文档
@Test
public void testUpdate() {
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("cuitCol");
System.out.println("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection("test");
System.out.println("集合 test 选择成功");
// 更新文档 将文档中likes=100的文档修改为likes=200
collection.updateMany(Filters.eq("likes", 100), new Document("$set", new Document("likes", 200)));
// 检索查看结果
FindIterable<Document> findIterable = collection.find();
// Apache Collections
IteratorUtils.toList(findIterable.iterator()).forEach(System.out::println);
IterableUtils.toList(findIterable).forEach(System.out::println);
// Google guava 或者 Google Collections【前者包含后者,提供的工具类更多】
Lists.newArrayList(findIterable).forEach(System.out::println);
mongoClient.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
// 要删除集合中的第一个文档,首先你需要使用com.mongodb.DBCollection类中的
// findOne()方法来获取第一个文档,然后使用remove 方法删除。
@Test
public void testDelete() {
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("cuitCol");
System.out.println("Connect to database successfully");
MongoCollection<Document> collection = mongoDatabase.getCollection("test");
System.out.println("集合 test 选择成功");
// 删除符合条件的第一个文档
collection.deleteOne(Filters.eq("likes", 200));
// 删除所有符合条件的文档
collection.deleteMany(Filters.eq("likes", 200));
// 检索查看结果
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
mongoCursor.forEachRemaining(System.out::println);
mongoClient.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}
}
********************************* 不积跬步无以至千里,不积小流无以成江海 *********************************