MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
net start MongoDB
net stop MongoDB
# 命令
use DATABASE_NAME
# 实例
use test
# 命令
db.dropDateabase()
# 命令
show dbs
# 命令
db
# 命令
db.createCollection(name, options)
# 实例
db.createCollection("user")
# 命令
db.collectionName.drop()
# 实例
db.user.drop()
# 命令
show collections
# 命令
show tables
# 命令
db.collectionName.insert(document)
# 实例
db.user.insert({"name":"zhouwei","age":23,"sex":true})
# 命令
db.collectionName.insertOne(document)
# 实例
db.user.insertOne({"name":"zhangsan","age":24,"sex":false})
# 命令
db.coolectionName.insertMany(document)
# 实例
db.user.insertMany([{"name":"jon","age":25,"sex":true},{"name":"tom","age":24,"sex":true}])
# 命令
db.collectionName.remove(
query,
{
justOne: ,
writeConcern:
}
)
# 删除所有文档
db.user.remove({})
# 删除条件文档
db.user.remove({"name":"zhouwei"})
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
- writeConcern :(可选)抛出异常的级别。
# 命令
db.collectionName.update(
query,
update,
{
upsert: ,
multi: ,
writeConcern:
}
)
# 替换文档:将整个文档替换为指定文档
db.user.update({"name":"zhouwei"},{"name":"tom","age":23,"sex":true})
# 修改文档:修改指定文档的指定域值,此时匹配文档存在即修改域值,匹配文档不存在即创建
db.user.update({"name":"zhouwei"},{$set:{"age":23,"sex":true}})
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
# 命令
db.collectionName.find(query, projection)
# 查询所有文档
db.user.find()
# 条件查询文档
db.user.find({"name":"zhouwei"})
- query :可选,使用查询操作符指定查询条件。
- projection :可选,使用投影操作符指定返回的键。
# 命令
db.createUser(
{
user: "",
pwd: "",
roles: [
{ role: "", db: "" } | "",
...
]
}
)
# 实例
db.createUser({"user":"root","pwd":"root","roles":[{"role":"dbOwner","db":"test"}]})
- user:指定用户账号
- pwd:指定用户密码
- roles:指定用户的角色
- 数据库用户角色:read、readWrite
- 数据库管理角色:dbAdmin、dbOwner、userAdmin
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
- 备份恢复角色:backup、restore
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase- 超级用户角色:root
# 命令
db.dropUser(username)
# 实例
db.dropUser("root")
# 命令
db.updateUser(
"",
{
roles : [
{ role: "", db: "" } | "",
...
],
pwd: ""
}
)
# 实例
db.updateUser("root",{"roles":[{"role":"read",db:"test"}],"pwd":"123456"})
# 命令
show users
# 命令
db.changeUserPassword("userName","newPasswd")
# 实例
db.changeUserPassword("root","root")
<dependency>
<groupId>org.mongodbgroupId>
<artifactId>mongo-java-driverartifactId>
<version>3.8.2version>
dependency>
@Test
public void test01()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 打印信息
System.out.println("mongoClient = " + mongoClient);
// 关闭连接
mongoClient.close();
}
@Test
public void test02()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 打印数据库对象地址
System.out.println("testDB = " + testDB);
// 删除数据库
testDB.drop();
// 关闭连接
mongoClient.close();
}
@Test
public void test03()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 创建集合
testDB.createCollection("student");
// 获取集合
MongoCollection<Document> studentCollection = testDB.getCollection("student");
// 打印集合
System.out.println("studentCollection = " + studentCollection);
// 删除集合
studentCollection.drop();
// 关闭连接
mongoClient.close();
}
@Test
public void test04()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 获取集合
MongoCollection<Document> userCollection = testDB.getCollection("user");
// 添加单个文档
Document document = new Document();
document.append("name","zhouwei");
document.append("age", 23);
document.append("sex", true);
userCollection.insertOne(document);
// 添加多个文档
List<Document> documents = new ArrayList<>();
documents.add(new Document("name", "张三"));
documents.add(new Document("name", "李四"));
userCollection.insertMany(documents);
// 关闭连接
mongoClient.close();
}
@Test
public void test05()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 获取集合
MongoCollection<Document> userCollection = testDB.getCollection("user");
// 删除符合条件的第一个文档
DeleteResult deleteResult1 = userCollection.deleteOne(Filters.eq("name", "张三"));
System.out.println("deleteResult = " + deleteResult1);
// 删除所有符合条件的文档
DeleteResult deleteResult2 = userCollection.deleteMany(Filters.eq("name", "zhouwei"));
System.out.println("deleteResult2 = " + deleteResult2);
// 关闭连接
mongoClient.close();
}
@Test
public void test06()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 获取集合
MongoCollection<Document> userCollection = testDB.getCollection("user");
// 文档替换
UpdateResult updateResult1 = userCollection.replaceOne(Filters.eq("name", "zhouwei"), new Document("name", "jack"));
System.out.println("updateResult1 = " + updateResult1);
// 文档修改
UpdateResult updateResult3 = userCollection.updateOne(Filters.eq("name", "baby"), new Document("$set", new Document("name", "tom")));
System.out.println("updateResult3 = " + updateResult3);
// 关闭连接
mongoClient.close();
}
@Test
public void test07()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 获取集合
MongoCollection<Document> userCollection = testDB.getCollection("user");
// 查询文档
FindIterable<Document> documents = userCollection.find();
// 遍历结果
for (Document document : documents)
{
System.out.println("document = " + document);
}
// 关闭连接
mongoClient.close();
}
@Test
public void test08()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 获取集合
MongoCollection<Document> userCollection = testDB.getCollection("user");
// 组装查询条件
BasicDBObject query = new BasicDBObject();
query.put("name", "jack");
// 查询文档
FindIterable<Document> documents = userCollection.find(query);
// 遍历结果
for (Document document : documents)
{
System.out.println("document = " + document);
}
// 关闭连接
mongoClient.close();
}
@Test
public void test09()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 获取集合
MongoCollection<Document> userCollection = testDB.getCollection("user");
// 分页查询
FindIterable<Document> documents = userCollection.find().skip(1).limit(2);
// 遍历结果
for (Document document : documents)
{
System.out.println("document = " + document);
}
// 关闭连接
mongoClient.close();
}
@Test
public void test10()
{
// 获取连接
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
// 获取数据库
MongoDatabase testDB = mongoClient.getDatabase("test");
// 获取集合
MongoCollection<Document> userCollection = testDB.getCollection("user");
// 查询个数
long count = userCollection.countDocuments();
// 打印结果
System.out.println("count = " + count);
// 关闭连接
mongoClient.close();
}
这里我们采用Studio 3T 2020.8.0可视化工具进行安装。
下载地址:https://studio3t.com/
进入安装界面