Java操作MongoDB进行增删改查(mongodb查询条件java)

上一篇主要讲了MongoDB数据的介绍,还有MongoDB数据库的安装和配置。经常有项目中会需要连接MongoDB数据库并操作数据库进行增删改查,本文主要讲在Java中怎么操作MongoDB数据库进行增删改查。

Java操作MongoDB

1)Java操作MongoDB需要第三方驱动程序,Maven项目可以在pom.xml文件加入依赖

<dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
                <version>3.0.4</version>
</dependency>

2)非Maven项目可以下载驱动程序jar包,导入项目buildBath路径。

代码实现

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 org.bson.conversions.Bson;

import java.util.ArrayList;
import java.util.List;

public class MongoUtil {
    //不通过认证获取连接数据库对象
    public static MongoDatabase getConnect() {
        //连接到 mongodb 服务
        MongoClient mongoClient = new MongoClient("localhost", 27017);
        //连接到数据库
        MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
        //返回连接数据库对象
        return mongoDatabase;
    }
    //需要密码认证方式连接
    public static MongoDatabase getConnect2() {
        List<ServerAddress> adds = new ArrayList<>();
        //ServerAddress()两个参数分别为 服务器地址 和 端口
        ServerAddress serverAddress = new ServerAddress("localhost", 27017);
        adds.add(serverAddress);
        List<MongoCredential> credentials = new ArrayList<>();
        //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
        MongoCredential mongoCredential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());
        credentials.add(mongoCredential);
        //通过连接认证获取MongoDB连接
        MongoClient mongoClient = new MongoClient(adds, credentials);
        //连接到数据库
        MongoDatabase mongoDatabase =
                mongoClient.getDatabase("test");

        //返回连接数据库对象
        return mongoDatabase;
    }

    /**
     * 插入一个文档
     */
    public void insertOne() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<org.bson.Document> collection = mongoDatabase.getCollection("user");
        //要插入的数据
        Document document = new Document("name", "张三").append("sex", "男").append("age", 18);
        //插入一个文档
        collection.insertOne(document);
    }
    /**
     * 插入多个文档
     */
    public void insertMany() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("user");
        //要插入的数据
        List<Document> list = new ArrayList<>();
        for (int i = 1; i <= 3; i++) {
            Document document = new Document("name", "张三").append("sex", "男").append("age", 18);
            list.add(document);
        }
        //插入多个文档
        collection.insertMany(list);
    }

    /**
     * 删除一个文档
     */
    public void deleteOne() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("user");
        //申明删除条件
        Bson filter = Filters.eq("age", 18);
        //删除与筛选器匹配的单个文档
        collection.deleteOne(filter);
    }
    /**
     * 删除多个文档
     */
    public void deleteMany() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("user");
        //申明删除条件
        Bson filter = Filters.eq("age", 18);
        //删除与筛选器匹配的所有文档
        collection.deleteMany(filter);
    }

    /**
     * 修改一个文档
     */
    public void updateOne() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("user");
        //修改过滤器
        Bson filter = Filters.eq("name", "张三");
        //指定修改的更新文档
        Document document = new Document("$set", new Document("age", 100));
        //修改单个文档
        collection.updateOne(filter, document);
    }
    /**
     * 修改多个文档
     */
    public void updateMany() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("user");
        //修改过滤器
        Bson filter = Filters.eq("name", "张三");
        //指定修改的更新文档
        Document document = new Document("$set", new Document("age", 100));
        //修改多个文档
        collection.updateMany(filter, document);
    }

    /**
     * 查询所有文档
     */
    public void find() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("user");
        //查找集合中的所有文档
        FindIterable findIterable = collection.find();
        MongoCursor cursor = findIterable.iterator();
        while (cursor.hasNext()) {
            System.out.println(cursor.next());
        }
    }

    /**
     * 通过过滤器查询
     */
    public void Filterfind() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("user");
        //指定查询过滤器
        Bson filter = Filters.eq("name", "张三");
        //指定查询过滤器查询
        FindIterable findIterable = collection.find(filter);
        MongoCursor cursor = findIterable.iterator();
        while (cursor.hasNext()) {
            System.out.println(cursor.next());
        }
    }

    /**
     * 查询第一个文件
     */
    public void findfirst() {
        //获取数据库连接对象
        MongoDatabase mongoDatabase = MongoUtil.getConnect();
        //获取集合
        MongoCollection<Document> collection = mongoDatabase.getCollection("user");
        //查找集合中的所有文档
        FindIterable findIterable = collection.find();
        //取出查询到的第一个文档
        Document document = (Document) findIterable.first();
        //打印输出
        System.out.println(document);
    }
}

相关文章

mybatis-plus保姆级入门教程,手把手教你轻松实现增删改查

一、前言通过前几期的基础教学,想必大家都已经掌握springboot项目的创建及项目启动等基本内容了吧(如果还没掌握,请去复习我上几期的内容,好伐?)。今个儿我要来整点高级的,使用组件的方式来轻松实现...

简历写&#39;增删改查&#39;永远被刷?Java老哥,这样包装项目直接逆袭!

简历写'增删改查'永远被刷?Java老哥,这样包装项目直接逆袭!老铁们!是不是每次写简历都觉得自己像个CRUD机器人?明明做了三年项目,写出来却像刚毕业?知道大厂HR怎么看这种简历吗?...

Java项目太普通没亮点?三步挖出隐藏技术价值

Java项目太普通没亮点?三步挖出隐藏技术价值 有个扎心真相:80%的Java工程师做的都是增删改查。但人家拿20k你拿12k,差在哪?教你用运营思维重新拆解项目。 案例一: 普通描述:「开发支付对账...

你的简历还在用&quot;增删改查&quot;当卖点?Java老手被当菜鸟刷的真相

你的简历还在用"增删改查"当卖点?Java老手被当菜鸟刷的真相上周面了个14年经验的哥们,项目经历写着:"物流管理系统开发,使用Dubbo框架...",我问他:"...