• Java 操作 MongoDB


     

    之前我们介绍的 MongoDB 的操作都是在 shell 命令中写的,在项目开发时我们当然都是用程序去操作 MongoDB 的,本文我们来看看如何用 Java 代码操作 MongoDB。

    准备工作

    首先我们需要驱动,MongoDB 的 Java 驱动我们可以直接在 Maven 中央仓库去下载,也可以创建 Maven 工程添加如下依赖:

    1
    2
    3
    4
    5
    <dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver</artifactId>
    <version>3.5.0</version>
    </dependency>

    建议通过 Maven 来添加依赖,如果自己下载 jar,需要下载如下三个 jar:

    1. org.mongodb:bson:jar:3.5.0
    2. org.mongodb:mongodb-driver-core:jar:3.5.0
    3. org.mongodb:mongodb-driver:jar:3.5.0

    另外,在使用 Java 操作 MongoDB 之前,记得启动 MongoDB 哦~

    获取集合

    所有准备工作完成之后,我们首先需要一个 MongoClient,如下:

    1
    MongoClient client = new MongoClient("192.168.248.136", 27017);

    然后通过如下方式获取一个数据库,如果要获取的数据库本身就存在,直接获取到,不存在 MongoDB 会自动创建:

    1
    MongoDatabase sang = client.getDatabase("sang");

    然后通过如下方式获取一个名为c1的集合,这个集合存在的话就直接获取到,不存在的话 MongoDB 会自动创建出来,如下:

    1
    MongoCollection<Document> c = sang.getCollection("c1");

    有了集合之后,我们就可以向集合中插入数据了。

    和在 shell 中的操作一样,我们可以一条一条的添加数据,也可以批量添加,添加单条数据操作如下:

    1
    2
    3
    Document d1 = new Document();
    d1.append("name", "三国演义").append("author", "罗贯中");
    c.insertOne(d1);

    添加多条数据的操作如下:

    1
    2
    3
    4
    5
    6
    7
    8
    List<Document> collections = new ArrayList<Document>();
    Document d1 = new Document();
    d1.append("name", "三国演义").append("author", "罗贯中");
    collections.add(d1);
    Document d2 = new Document();
    d2.append("name", "红楼梦").append("author", "曹雪芹");
    collections.add(d2);
    c.insertMany(collections);

    可以修改查到的第一条数据,操作如下:

    1
    c.updateOne(Filters.eq("author", "罗贯中"), new Document("$set", new Document("name", "三国演义123")));

    上例中小伙伴们也看到了修改器要如何使用,不管是 setset还是inc,用法都一致,我这里不再一个一个演示。也可以修改查到的所有数据,如下:

    1
    c.updateMany(Filters.eq("author", "罗贯中"), new Document("$set", new Document("name", "三国演义456")));

    可以删除查到的一条数据,如下:

    1
    c.deleteOne(Filters.eq("author", "罗贯中"));

    也可以删除查到的所有数据:

    1
    c.deleteMany(Filters.eq("author", "罗贯中"));

    Filters 里边还有其他的查询条件,都是见名知意,不赘述。

    可以直接查询所有文档:

    1
    2
    3
    4
    5
    FindIterable<Document> documents = c.find();
    MongoCursor<Document> iterator = documents.iterator();
    while (iterator.hasNext()) {
    System.out.println(iterator.next());
    }

    也可以按照条件查询:

    1
    2
    3
    4
    5
    FindIterable<Document> documents = c.find(Filters.eq("author", "罗贯中"));
    MongoCursor<Document> iterator = documents.iterator();
    while (iterator.hasNext()) {
    System.out.println(iterator.next());
    }

    其他的方法基本都是见名知意,这里不再赘述。

    验证问题

    上面我们演示的获取一个集合是不需要登录 MongoDB 数据库的,如果需要登录,我们获取集合的方式改为下面这种:

    1
    2
    3
    4
    5
    6
    7
    ServerAddress serverAddress = new ServerAddress("192.168.248.128", 27017);
    List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
    MongoCredential mc = MongoCredential.createScramSha1Credential("readuser","sang","123".toCharArray());
    credentialsList.add(mc);
    MongoClient client = new MongoClient(serverAddress,credentialsList);
    MongoDatabase sang = client.getDatabase("sang");
    c = sang.getCollection("c1");

    MongoCredential 是一个凭证,第一个参数为用户名,第二个参数是要在哪个数据库中验证,第三个参数是密码的 char 数组,然后将登录地址封装成一个 ServerAddress,最后将两个参数都传入 MongoClient 中实现登录功能。

    其他配置

    在连接数据库的时候也可以设置连接超时等信息,在MongoClientOptions中设置即可,设置方式如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ServerAddress serverAddress = new ServerAddress("192.168.248.128", 27017);
    List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
    MongoCredential mc = MongoCredential.createScramSha1Credential("rwuser","sang","123".toCharArray());
    credentialsList.add(mc);
    MongoClientOptions options = MongoClientOptions.builder()
    //设置连接超时时间为10s
    .connectTimeout(1000*10)
    //设置最长等待时间为10s
    .maxWaitTime(1000*10)
    .build();
    MongoClient client = new MongoClient(serverAddress,credentialsList,options);
    MongoDatabase sang = client.getDatabase("sang");
    c = sang.getCollection("c1");

    好了,Java 操作 MongoDB 我们就先说到这里,

  • 相关阅读:
    表单验证总结
    <wp8>_______环境搭建
    <二维码>———二维码生成器之绘制二维码
    <图片>———屏幕截图、图片保存至图片库
    《ListBox》———实现分页追加效果
    <wp7>———Zip解压缩
    <Toolkit>———LockablePivot
    <div>设置宽度,汉字正常换行,输入字母/数字不换行的解决方案分析
    <wp7查看独立存储工具>———2012年11月后仍可以工具
    wp7丿____在 Windows Phone 中如何测试与照片选择器或相机启动器交互的应用
  • 原文地址:https://www.cnblogs.com/Bkxk/p/12980607.html
Copyright © 2020-2023  润新知