Java-MongoDB-API

这篇具有很好参考价值的文章主要介绍了Java-MongoDB-API。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、前置工作

创建Maven工程,导入依赖:

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

1、连接MongoDB并测试

注意:确保已经启动MongoDB,最好是把MongoDB设置为自启程序。

//连接MongoDB服务器,自带连接池效果
        MongoClient mongoClient = MongoClients.create("mongodb://127.0.0.1:27017");
        //获取数据库,如果数据库不存在,为该数据库存储数据时自动创建数据库。
        MongoDatabase database = mongoClient.getDatabase("test");
        //获取集合,如果集合不存在,首次存储数据时,自动创建集合
        MongoCollection<Document> collection = database.getCollection("teachers");
        //获取数据,获取集合中第一个文档,并转为json打印
        System.out.println(collection.find().first().toJson());    //测试
        //关闭客户端
        if (mongoClient != null){
            mongoClient.close();
        }

如果有用户名和密码的话,连接的地址应该修改为:

mongodb://username:password@host/?authSource=admin

2、Java 操作集合

2.1、创建集合

创建集合有多种方式:创建普通的集合,创建固定大小的集合(capped)、创建带校验规则的集合:

1、创建普通集合

/**
     * 创建无限定集合
     * @param name 集合名称
     */
    public void createCollection(String name){
        database.createCollection(name);
    }

2、创建固定大小的集合

/**
     * 创建固定大小的集合
     * @param name 集合名称
     * @param size 集合大小
     */
    public void createCollection(String name,long size){
        database.createCollection(name,new CreateCollectionOptions().capped(true).sizeInBytes(size));
    }

3、创建带校验规则的集合

 /**
     * 创建带校验规则的集合
     * 在插入文档时必须存在两个字段:existsFiledName1和existsFiledName2
     * @param name 集合名称
     * @param existsFiledName1 字段1
     * @param existsFiledName2 字段2
     */
    public void createCollectionWithFilter(String name,String existsFiledName1,String existsFiledName2){
        ValidationOptions validationOptions = new ValidationOptions().validator(
                Filters.or(Filters.exists(existsFiledName1), Filters.exists(existsFiledName2))
        );
        database.createCollection(name,new CreateCollectionOptions().validationOptions(validationOptions));
    }

 文章来源地址https://www.toymoban.com/news/detail-678204.html

2.2、获取集合

 public MongoCollection<Document> getCollection(String name){
        return database.getCollection(name);
    }

2.3、删除集合

/**
     * 删除集合
     */
    public void dropCollection(String collectionName){
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.drop();
    }

3、Java 操作文档

3.1、插入单个文档

/**
     * 插入一个文档
     * 创建一个文档对象,参数可以接收键值对,也可以直接接收一个Map对象
     * 文档对象的本质是BSON类型,还类型对应java中的Map,BSON数组对应Java中的List
     * Document.append(String key,Object value);    键指的是字段名 值可以是字符串可以是Document对象或者List数组
     */
    public void insertDocument(String collectionName,Map<String,Object> map){
        Document doc = new Document();
        for (String key : map.keySet()) {
            doc.append(key,map.get(key));
        }
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.insertOne(doc);
    }

3.2、插入多个文档

/**
     * 插入多个文档
     */
    public void insertDocuments(String collectionName,List<Document> documents){
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.insertMany(documents);
    }

3.3、修改单个文档

这里用的是 Filters.eq() 相当于判断是否等于,如果有数值型的字段,可以用Filters.lt() 表示小于、Filters.gt() 表示大于...

 /**
     *
     * @param collectionName 集合名称
     * @param conditionFiledName 查询条件字段名
     * @param value 查询条件字段对应的值
     * @param updateList 更新后的字段键值对列表 注意:这里需要传入一个List<Document>集合,其中,Document对象的key应该为"$set",值为新的Document对象
     */
    public void updateDocument(String collectionName,String conditionFiledName,String value,List<Document> updateList){
        MongoCollection<Document> collection = getCollection(collectionName);
        collection.updateOne(Filters.eq(conditionFiledName,value),updateList);
    }

3.4、修改多个文档

//修改多个文档 所有订单数量<100的订单全部+1
        MongoCollection<Document> collection = getCollection("orders");
//给满足条件的订单的订单数目全部+100
        UpdateResult updateResult = collection.updateMany(Filters.eq("order_nums",100), Updates.inc("order_nums", 100));
        System.out.println(updateResult.getModifiedCount());

3.5、删除文档

 //删除单个条件文档
        MongoCollection<Document> collection = getCollection("orders");
        collection.deleteOne(Filters.eq("order_id","0003"));
//删除多个满足条件文档
collection.deleteOne(Filters.eq("order_num","100"));

4、Java 查询文档

4.1、查询所有文档

MongoCollection<Document> collection = getCollection("students");
        //查询所有文档
        MongoCursor<Document> cursor = collection.find().iterator();
//        MongoCursor<Document> cursor = collection.find().limit(100);//只看前100行
//        MongoCursor<Document> cursor = collection.find().first();//只看第一行
        try {
            while (cursor.hasNext()) {
                System.out.println(cursor.next().toJson());
            }
        }finally {
            cursor.close();
        }

4.2、条件查询

主要依靠Filters类进行拦截过滤。

//多条件查询 60<=score<80 并且 address="山西"(如果address是数组,则"山西"包含在内即可)
        FindIterable<Document> documents = collection.find(
                new Document("score", new Document("$gte", 60)
                        .append("$lt", 80))
                        .append("address", "山西")
        );
        //等价于上面的
        collection.find(Filters.and(
                Filters.gte("score",60),
                Filters.lt("score",80),
                Filters.eq("address","山西")));

4.3、投影

投影就是选择展示的字段,因为默认是全部展示的。即使设置了想要展示的字段,"_id"字段也会被展示,需要用专门指定"_id"为0或者使用 Projections.excludeId()。

 //投影
        collection.find(
                Filters.eq("name","李大喜")
                ).projection(new Document("name",1)
                .append("sex",1)
                .append("age",1)
                .append("_id",0)
        );
        //等价于上面的投影 Projections.excludeId() 不展示 _id
        collection.find(
                Filters.eq("name","李大喜"))
        .projection(Projections.fields(Projections.include("name","sex","age"),Projections.excludeId()));

 

4.4、排序

//排序 先按照年龄排序 年龄一样的安照工资排序
        //asc 升序
        //desc 降序
        collection.find(Filters.lt("age",50))
        .sort(Sorts.ascending("age","sal"));

 

 

到了这里,关于Java-MongoDB-API的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • HBase Java API 开发:批量操作 第2关:批量删除数据

    删除单行数据 删除一行数据很简单,我们来看个示例: 这段代码就可以删除行键为 row1 的行。 删除多行数据 如何删除多行数据呢? 相信你已经猜到了,既然 get() 方法有重载方法,那应该 delete() 方法也有,确实: 这样就可以删除多行数据啦。 编程要求 还等啥,亲自试一试

    2024年02月05日
    浏览(47)
  • MongoDB复杂聚合查询与java中MongoTemplate的api对应

    MongoDB聚合json脚本 MongoTemplate的API

    2024年02月09日
    浏览(6)
  • 在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行

    在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行

    在HBase中执行查询操作通常使用HBase Shell或编程语言API(如Java或Python)来执行。以下是使用HBase Shell进行查询的一些示例: 单行查询:获取指定行键的数据。 扫描表:按行范围获取表中的多个行的数据。 过滤器查询:使用过滤器指定查询条件来获取数据。 列族查询:获取指

    2024年01月21日
    浏览(10)
  • HBase开发: Java API 管理表 第1关:JavaAPI获取表的列表

    本关我们来使用 JavaApi 对 HBase 中的表进行管理,第一关我们来学习如何列出所有的表。 获取表的列表 如何使用 Java 列出 HBase 中所有的表呢? 在HBase中我们要获取一张表的基本信息需要用到一个类: TableDescriptor ; 通过 TableDescriptor 我们可以获取表的名字,列族等信息; 好了

    2024年02月07日
    浏览(7)
  • Java地图专题课 基本API BMapGLLib 地图找房案例 MongoDB

    Java地图专题课 基本API BMapGLLib 地图找房案例 MongoDB

    本课程基于百度地图技术,由基础入门开始到应用实战,适合零基础入门学习。将企业项目中地图相关常见应用场景的落地实战,包括有地图找房、轻骑小程序、金运物流等。同时讲了基于Netty实现高性能的web服务,来处理高并发的问题。还讲解了海量坐标数据处理解决方案

    2024年02月13日
    浏览(7)
  • HBase Java API 开发:表的扫描与扫描的缓存和批量处理 第1关:批量处理

    HBase Java API 开发:表的扫描与扫描的缓存和批量处理 第1关:批量处理

    批量操作 如果我们去查看 HBaseAPI 的源码会发现,在上次实训中我们使用的 delete、get,put 这些批量操作,实际上都是调用了 batch() 方法。 查看 put(ListPut puts) 函数源码: 我们可以发现 put(ListPut puts) 方法最终还是调用的 batch(final List? extends Row actions, final Object[] results, int rpcTi

    2024年02月09日
    浏览(11)
  • 3、HBase的java API基本操作(创建、删除表以及对数据的添加、删除、查询以及多条件查询)

    1、hbase-2.1.0介绍及分布式集群部署、HA集群部署、验证、硬件配置推荐 2、hbase-2.1.0 shell基本操作详解 3、HBase的java API基本操作(创建、删除表以及对数据的添加、删除、查询以及多条件查询) 4、HBase使用(namespace、数据分区、rowkey设计、原生api访问hbase) 5、Apache Phoenix(5.0.0-5.

    2024年02月08日
    浏览(13)
  • HBase 开发:使用Java操作HBase

    通过Java代码操作HBase数据库,包括创建表、添加数据、获取数据和删除表等操作。学习如何使用HBaseConfiguration和ConnectionFactory连接HBase数据库,以及如何使用Admin对象创建表、Put对象添加数据、Get对象获取数据和删除表。

    2024年01月15日
    浏览(9)
  • 8-5 HBase 开发:使用Java操作HBase

    目录 第一关: 命令行: 代码: 第二关:添加数据 命令行: 代码: 第三关:获取数据 命令行: 代码: 第四关: 代码: 命令行: start-dfs.sh start-hbase.sh hadoop fs -ls /hbase 代码: 在 HBase 中创建表 dept,emp ,列都为: data Configuration config = HBaseConfiguration.create(); //使用create()静态方

    2024年02月03日
    浏览(8)
  • 实验四 HBase开发:使用java操作HBase

    实验四 HBase开发:使用java操作HBase

    熟悉HBase数据库操作常用的Java API 操作系统:CentOS 8 Hadoop版本:3.2.3 HBase版本:2.4.12 jdk版本:1.8 Java IDE:eclipse 1. 创建表 创建项目 在eclipse中创建项目,首先将先前下载的压缩包”hbase-2.4.12-tar.bin.gz\\\"解压,然后将其目录下的lib目录下的所有jar包拷贝到项目的lib目录下,然后build

    2024年02月04日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包