【转发】Java使用MongoDB数据库进行增删改查
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_26584263/article/details/82585657
1、MongoDB数据库用户的创建
由于MongoDB安装默认的账户是没有密码的,是对所有ip 都开放的。我选择了新建一个用户来访问数据库,首先直接点击bin目录下的mongo.exe启动数据库
使用admin数据库,新建一个用户
use admin //使用admin数据库
db.createUser({user:"ceshi",pwd:"123456",roles:["root"]}) //新建测试用户
db.auth("ceshi","123456") //验证用户存不存在
我新建了一个测试用户,密码是123456,用户角色是root用户就是超级管理员嘛
然后使用该账户登录
mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
例如:mongo --port 27017 -u "ceshi" -p "123456" --authenticationDatabase "admin"
或
mongo admin -u "adminUser" -p "adminPass"
例如:mongo admin -u "ceshi" -p "123456"
使用cmd命令窗口,路径定位到mongodb目录下的bin路径,输入登录数据库的语句进行操作,可以参考下图:
2、MongoDB新建数据库和集合
新建一个test的数据库,并且新建一个user的集合id是自增的
use ceshidata //创建一个数据库ceshidata
db.createCollection("user",{capped:true,autoIndexId:true}) //新建一个集合user,_id自增
3、java使用MongoDB数据库简单教程
新建一个maven项目工程,导入mongodb相关依赖的jar
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.8.0</version>
</dependency>
新建一个类MongoDBTest
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;
import org.bson.Document;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MongoDBTest {
public static void main(String args[] ){
try{
//ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress("localhost",27017);
//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential("ceshi", "admin", "123456".toCharArray());
//通过连接认证获取MongoDB连接
MongoClient mongoClient = new MongoClient(Arrays.asList(serverAddress), Arrays.asList(credential));
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("ceshidata");
System.out.println("<______________Mongodb数据库连接成功!_____________>");
create(mongoDatabase); //创建集合
add(mongoDatabase);//新增数据
find(mongoDatabase);//查看数据
update(mongoDatabase);//修改数据
delete(mongoDatabase);//删除数据
}catch(Exception e){
System.err.println("!!MongoDB数据库连接异常:" + e.getMessage() );
}
}
public static void create(MongoDatabase a){
try{
a.createCollection("user");
System.out.println("集合创建成功");
}catch(Exception e){
System.err.println( "!!集合创建异常:" + e.getMessage() );
}
}
public static void find(MongoDatabase a){
try {
MongoCollection<Document> list = a.getCollection("user");
FindIterable<Document> findIterable = list.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while (mongoCursor.hasNext()) {
System.out.println("查询的数据:" + mongoCursor.next());
}
}catch(Exception e){
System.err.println( "!!数据查询异常:" + e.getMessage() );
}
}
public static void add(MongoDatabase a) {
try {
//新增两个学生和教师的数据
MongoCollection<Document> collections = a.getCollection("user");
Document document1 = new Document("name", "学生").
append("age", 18).
append("type", "学生").
append("likesport", "打乒乓球");
Document document2 = new Document("name", "学生").
append("age", 19).
append("type", "学生").
append("likesport", "打羽毛球");
Document document3 = new Document("name", "老师").
append("age", 33).
append("type", "教师").
append("likeTv", "湖南Tv");
Document document4 = new Document("name", "老师").
append("age", 30).
append("type", "教师").
append("likeTv", "星空卫视");
List<Document> documents = new ArrayList<Document>();
documents.add(document1);
documents.add(document2);
documents.add(document3);
documents.add(document4);
collections.insertMany(documents);
System.out.println("数据插入成功");
}catch(Exception e){
System.err.println( "!!数据新增异常:" + e.getMessage() );
}
}
public static void update(MongoDatabase a){
try {
MongoCollection<Document> mongoCollection = a.getCollection("user");
//修改满足条件的第一条数据
mongoCollection.updateOne(Filters.eq("name", "老师"), new Document("$set", new Document("address", "深圳市福田区")));
//修改所以满足条件的数据
mongoCollection.updateMany(Filters.eq("name", "老师"), new Document("$set", new Document("likeTv", "CCTV-1")));
FindIterable<Document> findIterable = mongoCollection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while (mongoCursor.hasNext()) {
System.out.println("更新后的数据:" + mongoCursor.next());
}
}catch(Exception e){
System.err.println( "!!数据更新异常:" + e.getMessage() );
}
}
public static void delete(MongoDatabase a){
try {
MongoCollection<Document> collection = a.getCollection("user");
//删除符合条件的第一个文档
collection.deleteOne(Filters.eq("name", "老师"));
//删除所有符合条件的文档
collection.deleteMany(Filters.eq("name", "学生"));
//检索查看结果
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while (mongoCursor.hasNext()) {
System.out.println("删除后的数据:" + mongoCursor.next());
}
}catch(Exception e){
System.err.println( "!!数据删除异常:" + e.getMessage() );
}
}
}
就对于MongoDB而言如果某条数据没有某属性就不需要使用, 只需要写入有的属性,这就是nosql的好处吧。
下面就是上面的程序运行的结果,我们使用MongoDB命令新建了user集合所以使用java语言新建集合就会报异常(数据集合已经存在的异常)老师数据修改的时候可以发现第一个老师修改的时候新增了一个地址address,MongoDB中只要是相同的主键就会修改,没有就会新增,修改和删除都可以指定对第一个数据或者全部满足条件的数据操作。
————————————————
版权声明:本文为CSDN博主「天雨流芳-128」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26584263/article/details/82585657