JAVA MongoDB 连接以及增删改查

pom.xml引入jar

        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>bson</artifactId>
            <version>4.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>3.8.2</version>
        </dependency>

JAVA MongoApi 操作

Java连接MongoDB

  public static void main(String[] args) {
        try {
            //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
            //ServerAddress()两个参数分别为 服务器地址 和 端口
            ServerAddress serverAddress = new ServerAddress("172.16.131.156",27017);
            List<ServerAddress> addrs = new ArrayList<ServerAddress>();
            addrs.add(serverAddress);

            //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
            MongoCredential credential = MongoCredential.createScramSha1Credential("tbook", "STC", "tbook".toCharArray());
//            List<MongoCredential> credentials = new ArrayList<MongoCredential>();
//            credentials.add(credential);
            MongoClientOptions.Builder build = new MongoClientOptions.Builder();
            build.connectionsPerHost(50); //与目标数据库能够建立的最大connection数量为50
            build.maxWaitTime(2*60*1000);
           ;
            build.threadsAllowedToBlockForConnectionMultiplier(50); //如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
            build.connectTimeout(1000*60*1); //与数据库建立连接的timeout设置为1分钟
            build.localThreshold(15000);
            build.maxConnectionIdleTime(6000);
            build.socketTimeout(60000);
            MongoClientOptions myOptions = build.build();
            //通过连接认证获取MongoDB连接
            MongoClient mongoClient = new MongoClient(addrs,credential,myOptions);
            //连接到数据库
            MongoDatabase mongoDatabase = mongoClient.getDatabase("STC");
            System.out.println("Connect to database successfully");
//            insertWhere(mongoDatabase);
//            query(mongoDatabase);
//            queryWhere(mongoDatabase);
//            insertWhere(mongoDatabase);
//            updateWhere(mongoDatabase);
            findOneUpdate(mongoDatabase);
        } catch (Exception e) {
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
    }

查询

集合查询 find
// table 为集合
mongoDatabase.getCollection(table).find()
查询集合的总数量 countDocuments
// table 为集合
mongoDatabase.getCollection(table).countDocuments()

按条件查询

单条件查询 Filters.eq
 Bson bson =  Filters.eq("name",1);
 mongoDatabase.getCollection(table).find(bson);
单条件查询数量 countDocuments
Bson bson =  Filters.eq("name",1);
 mongoDatabase.getCollection(table).countDocuments(bson);
多条件查询 Filters.and
 Bson bson =Filters.and( Filters.eq("name",1), Filters.eq("_id",0));
 mongoDatabase.getCollection(table).find(bson);
多条件查询数量 countDocuments
 Bson bson =Filters.and( Filters.eq("name",1), Filters.eq("_id",0));
 mongoDatabase.getCollection(table).countDocuments(bson);
查询返回指定字段 projection
Bson bson =Filters.and( Filters.eq("name",1), Filters.eq("_id",0));
FindIterable<Document> tbook = mongoDatabase.getCollection(table).find().projection(bson);
查询并排序 sort
//-1 为倒序  1为正序
Bson sort = Filters.eq("time",-1);
FindIterable<Document> tbook1 = mongoDatabase.getCollection(table).find().sort(sort);
按条件,时间区间查询并排序
// Filters.eq 条件匹配   Filters.gte  大于  Filters.lte  小于

Bson filter =Filters.and(Filters.eq("securityID", "TS2306"),Filters.gte("createTime", "2022-10-19 00:00:00.000"),Filters.lte("createTime", "2022-10-19 23:59:59.999")) ;
Bson sort = Filters.eq("time",-1);
FindIterable<Document> tbook = mongoDatabase.getCollection(table).find(filter).sort(sort);
模糊查询 regex
Bson filter = Filters.regex("name", "小明");
mongoDatabase.getCollection("test").find(filter);
分页查询 skip,limit
//skip 跳多少行,limit看多少数据
Bson filter = Filters.regex("name", "小明");
mongoDatabase.getCollection("test").find(filter).skip(2).limit(10);

添加

单条添加 insertOne
Document document = new Document();
document.append("name","小明").append("age",10).append("sex","男").append("time","2022-10-18 17:45:06.465");
mongoDatabase.getCollection("test").insertOne(documents);
多条添加 insertMany
List<Document> documents = new ArrayList<>();
Document document = new Document();
document.append("name","小明").append("age",10).append("sex","男").append("time","2022-10-18 17:45:06.465");
Document document1 = new Document();
document1.append("name","小红").append("age",10).append("sex","女").append("time","2022-10-18 17:45:06.460");
documents.add(document);
documents.add(document1);
mongoDatabase.getCollection("test").insertMany(documents);

修改

有就修改,没有就添加 findOneAndUpdate
// true 为默认添加,false为不添加
Bson filter =Filters.and(Filters.eq("name", "小明"),Filters.eq("sex","男")) ;
Document document = new Document();
document.append("name","小明军").append("age",15).append("sex","男人").append("time","2022-10-18 17:45:06.480");
Document oneAndUpdate = mongoDatabase.getCollection("test").findOneAndUpdate(filter, new Document().append("$set", document), new FindOneAndUpdateOptions().upsert(true));
修改单条 updateOne
Bson filter =Filters.and(Filters.eq("name", "小明"),Filters.eq("sex","男")) ;
Document document = new Document();
document.append("name","小明军").append("age",15).append("sex","男人").append("time","2022-10-18 17:45:06.480");
mongoDatabase.getCollection("test").updateOne(filter,new Document().append("$set", document));
修改多条 updateMany
Bson filter =Filters.and(Filters.eq("name", "小明"),Filters.eq("sex","男")) ;
Document document = new Document();
document.append("name","小明军").append("age",15).append("sex","男人").append("time","2022-10-18 17:45:06.480");
mongoDatabase.getCollection("test").updateMany(filter,new Document().append("$set", document));

删除数据

删除单个数据 deleteOne
Bson filter = Filters.and(Filters.eq("name", "小明"), Filters.eq("sex", "男"));
mongoDatabase.getCollection("test").deleteOne(filter);
删除多个数据 deleteMany
Bson filter = Filters.and(Filters.eq("name", "小明"), Filters.eq("sex", "男"));
mongoDatabase.getCollection("test").deleteMany(filter);

JAVA代码展示

package test;

import com.mongodb.*;
import com.mongodb.client.ClientSession;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class Authentication {
    public static String table = "test";
    public static void main(String[] args) {
        try {
            //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址
            //ServerAddress()两个参数分别为 服务器地址 和 端口
            ServerAddress serverAddress = new ServerAddress("172.16.131.156",27017);
            List<ServerAddress> addrs = new ArrayList<ServerAddress>();
            addrs.add(serverAddress);

            //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
            MongoCredential credential = MongoCredential.createScramSha1Credential("tbook", "STC", "tbook".toCharArray());
//            List<MongoCredential> credentials = new ArrayList<MongoCredential>();
//            credentials.add(credential);
            MongoClientOptions.Builder build = new MongoClientOptions.Builder();
            build.connectionsPerHost(50); //与目标数据库能够建立的最大connection数量为50
            build.maxWaitTime(2*60*1000);
           ;
            build.threadsAllowedToBlockForConnectionMultiplier(50); //如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
            build.connectTimeout(1000*60*1); //与数据库建立连接的timeout设置为1分钟
            build.localThreshold(15000);
            build.maxConnectionIdleTime(6000);
            build.socketTimeout(60000);
            MongoClientOptions myOptions = build.build();
            //通过连接认证获取MongoDB连接
            MongoClient mongoClient = new MongoClient(addrs,credential,myOptions);
            //连接到数据库
            MongoDatabase mongoDatabase = mongoClient.getDatabase("STC");
            System.out.println("Connect to database successfully");
//            insertWhere(mongoDatabase);
//            query(mongoDatabase);
//            queryWhere(mongoDatabase);
//            insertWhere(mongoDatabase);
//            updateWhere(mongoDatabase);
            findOneUpdate(mongoDatabase);
        } catch (Exception e) {
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
    }

    //查询
    public static void query(MongoDatabase mongoDatabase){
        mongoDatabase.getCollection(table).countDocuments();
        Bson bson =Filters.and( Filters.eq("name",1), Filters.eq("_id",0));

        FindIterable<Document> tbook = mongoDatabase.getCollection(table).find().projection(bson);
        tbook.forEach((Block<? super Document>) document -> {
            System.out.println(document.get("name"));
        });
        Bson sort = Filters.eq("time",-1);
        FindIterable<Document> tbook1 = mongoDatabase.getCollection(table).find().sort(sort);
        tbook1.forEach((Block<? super Document>) document -> {
            System.out.println(document);
        });
    }

    //条件查询
    public static void queryWhere(MongoDatabase mongoDatabase){
        Bson filter =Filters.and(Filters.eq("securityID", "TS2306"),
                Filters.gte("createTime", "2022-10-19 00:00:00.000"),
                Filters.lte("createTime", "2022-10-19 23:59:59.999")) ;
        Bson sort = Filters.eq("time",-1);
        FindIterable<Document> tbook = mongoDatabase.getCollection(table).find(filter).sort(sort);
        long countDocuments = mongoDatabase.getCollection(table).countDocuments(filter);
        System.out.println(countDocuments);
        tbook.forEach((Block<? super Document>) document -> {
            System.out.println(document);
        });
    }

    //条件查询
    public static void updateWhere(MongoDatabase mongoDatabase){
        Bson filter =Filters.and(Filters.eq("_id", new ObjectId("63579bcd4d01156a58abfc1e"))) ;
        Document document = new Document();
        document.append("name","小小红").append("age",10).append("sex","女");
        UpdateResult updateResult = mongoDatabase.getCollection("test").updateOne(filter,  new Document("$set", document));
            System.out.println(updateResult.getModifiedCount());
    }
    //条件查询
    public static void findOneUpdate(MongoDatabase mongoDatabase){
        Bson filter =Filters.and(Filters.eq("name", "小明"),Filters.eq("sex","男")) ;
        Document document = new Document();
        document.append("name","小明军").append("age",15).append("sex","男人").append("time","2022-10-18 17:45:06.480");
        Document oneAndUpdate = mongoDatabase.getCollection("test").findOneAndUpdate(filter, new Document().append("$set", document), new FindOneAndUpdateOptions().upsert(true));
        mongoDatabase.getCollection("test").updateMany(filter,new Document().append("$set", document));
        System.out.println(oneAndUpdate);
    }

    //修改
    public static void updateOneMany(MongoDatabase mongoDatabase){
        Bson filter =Filters.and(Filters.eq("name", "小明"),Filters.eq("sex","男")) ;
        Document document = new Document();
        document.append("name","小明军").append("age",15).append("sex","男人").append("time","2022-10-18 17:45:06.480");
        mongoDatabase.getCollection("test").updateMany(filter,new Document().append("$set", document));
        mongoDatabase.getCollection("test").updateOne(filter,new Document().append("$set", document));
    }

    //修改
    public static void deleteOneMany(MongoDatabase mongoDatabase) {
        Bson filter = Filters.and(Filters.eq("name", "小明"), Filters.eq("sex", "男"));
        mongoDatabase.getCollection("test").deleteMany(filter);
        mongoDatabase.getCollection("test").deleteOne(filter);
    }

    //模糊查询
    public static void likeQuery(MongoDatabase mongoDatabase) {
        Bson filter = Filters.regex("name", "小明");
        mongoDatabase.getCollection("test").find(filter).skip(2).limit(10);
        mongoDatabase.getCollection("test").find(filter);
    }

    //条件查询
    public static void insertWhere(MongoDatabase mongoDatabase){
        List<Document> documents = new ArrayList<>();
        Document document = new Document();
        document.append("name","小明").append("age",10).append("sex","男").append("time","2022-10-18 17:45:06.465");
        Document document1 = new Document();
        document1.append("name","小红").append("age",10).append("sex","女").append("time","2022-10-18 17:45:06.460");
        documents.add(document);
        documents.add(document1);
        mongoDatabase.getCollection("test").insertMany(documents);

    }
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无奈的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值