MongoDB学习笔记(3)——Java

4.通过Java程序操作MongoDB

4.1 连接数据库

下载驱动并将驱动jar包加入项目的classpath,驱动包下载地址:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/
与关系型数据库类似,我们要指定相应的数据库地址、端口号以及数据库名称,如果指定的数据库不存在,那么MongoDB会自动创建。

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

public class MongoDBDemo {
    public static void main(String[] args){
        try {
            //指定服务器地址和端口号
            MongoClient client=new MongoClient("localhost",27017);
            //指定连接的数据库名称
            MongoDatabase database=client.getDatabase("test");
            System.out.println("Connect to database successfully");
        }catch (Exception e){
            System.err.println(e.getClass().getName()+":"+e.getMessage());
        }
    }
}

在这个实例中,连接数据库并没有需要指定用户名、密码,如果我们需要连接到需要用户名密码的MongoDB数据库可以选择如下的连接方式:

public static void main(String[] args){
        //db.createUser({user:"admin",pwd:"123456",roles:["root"]})命令可以在MongoDB的admin数据库中创建管理员
        try{
            //连接到MongoDB服务,如果是远程服务器,可以传入IP地址
            ServerAddress serverAddress=new ServerAddress("localhost",27017);
            List<ServerAddress> addrs=new ArrayList<ServerAddress>();
            addrs.add(serverAddress);

            MongoCredential credential=
                    MongoCredential.createScramSha1Credential("admin","test","yck4611764".toCharArray());
            List<MongoCredential> credentials=new ArrayList<MongoCredential>();
            credentials.add(credential);

            //通过连接认证获取MongoDB的连接
            MongoClient client=new MongoClient(addrs,credentials);
            //连接到数据库
            MongoDatabase database=client.getDatabase("test");
            System.out.println("Connect to database successfully");
        }catch (Exception e){
            System.err.println(e.getClass().getName()+":"+e.getMessage());
        }
    }

4.2 创建集合

连接数据库之后再创建集合的操作时十分简单的,如下:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

public class MongoDBDemo {
    public static void main(String[] args){
        try {
            //指定服务器地址和端口号
            MongoClient client=new MongoClient("localhost",27017);
            //指定连接的数据库名称
            MongoDatabase database=client.getDatabase("test");
            System.out.println("Connect to database successfully");

            //创建集合
            database.createCollection("myCollection");
        }catch (Exception e){
            System.err.println(e.getClass().getName()+":"+e.getMessage());
        }
    }
}

4.3 获取集合

在上述4.2例程的基础上

//Document是org.bson.Document
MongoCollection<Document> collection=database.getCollection("myCollection");

4.4 插入文档

插入文档操作:

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;

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

public class MongoDBDemo {
    public static void main(String[] args){
        try {
            //指定服务器地址和端口号
            MongoClient client=new MongoClient("localhost",27017);
            //指定连接的数据库名称
            MongoDatabase database=client.getDatabase("test");
            System.out.println("Connect to database successfully");
            database.createCollection("myCollection");
            MongoCollection<Document> collection=database.getCollection("myCollection");
            //文档创建
            Document document = new Document("title", "MongoDB").
                    append("description", "database").
                    append("likes", 100).
                    append("by", "XiaoYin");
            List<Document> documents=new ArrayList<Document>();
            documents.add(document);
            //collection.insertOne(document);
            collection.insertMany(documents);
            System.out.println("document inserted successfully!");
        }catch (Exception e){
            System.err.println(e.getClass().getName()+":"+e.getMessage());
        }
    }
}

4.5 检索所有文档

  1. 首先要获取一个检索的迭代器FindIterator<Document>,可以通过Collection对象的find()方法获取;
  2. 获取MongoDB的游标MongoCursor<Document>,游标通过调用FindIterator<Document>iterator()方法获得;
  3. 使用游标遍历集合获取文档。
...
            //续上
            FindIterable<Document> findIterable=collection.find();
            MongoCursor<Document> cursor=findIterable.iterator();
            while (cursor.hasNext()){
                System.out.println(cursor.next());
            }
...

4.6 更新文档

调用集合的updateOne()方法或者updateMany()方法,实例:

collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));

4.7 删除文档

调用集合的deleteOne()或者deleteMany()方法,实例:

collection.deleteOne(Filters.eq("likes", 200));
collection.deleteMany (Filters.eq("likes", 200));
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值