这篇文章主要介绍了java使用mongodb数据库的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

MongoDB是当今非常流行的一款NoSQL数据库,本文介绍如何使用MongoDB的Java驱动来操作MongoDB。

一、引入MongoDB Java Driver包

如果需要操作MongoDB的Java项目是一个Maven项目,可以在依赖中加上以下的配置。

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

或者通过直接下载jar包的方式使用,下载地址:mongo-java-driver-2.13.2.jar。

详细的如何引入MongoDB jar包的方法可以参考官方文档。

二、连接MongoDB

可以使用MongoClient来连接MongoDB,MongoClient的使用方式如下:

MongoClientmongoClient=newMongoClient("localhost",27017);DBdb=mongoClient.getDB("mydb");

上面的代码连接了localhost:27017上MongoDB服务,并指定使用mydb数据库。连接后便可以对这个数据库作进一步的操作。

需要指出的是,MongoClient是线程安全的,可以在多线程环境中共享同一个MongoClient。通常来说,一个应用程序中,只需要生成一个全局的MongoClient实例,然后在程序的其他地方使用这个实例即可。

三、认证

可以使用多种方式对连接进行认证,下面介绍两种方式。

1. 方式一:MongoCredential

MongoCredential类的createCredential方法可以指定认证的用户名,密码,以及使用的数据库,并返回一个MongoCredential对象。其方法的声明如下:

staticMongoCredentialcreateCredential(StringuserName,Stringdatabase,char[]password)

例如:

MongoCredentialcredential=MongoCredential.createCredential("user","mydb","password".toCharArray());

上面创建了一个用户名为user,密码为password,数据库为mydb的MongoCredential对象。

将生成MongoCredential的对象作为MongoClient构造函数的参数。由于MongoClient构造函数的为List<MongoCredential>类型,所以需要先构造成一个List再传递。

完整的认证的例子如下:

MongoCredentialcredential=MongoCredential.createCredential("user","mydb","password".toCharArray());ServerAddressserverAddress=newServerAddress("localhost",27017);MongoClientmongoClient=newMongoClient(serverAddress,Arrays.asList(credential));DBdb=mongoClient.getDB("mydb");

2. 方式二:MongoClientURI

亦可以使用MongoClientURI完成MongoDB的认证,它代表了一个URI对象。MongoClientURI的构造函数接受一个String类型的字符串,这个字符串的格式如下:

mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]

生成的MongoClientURI对象作为MongoClient构造函数的参数,完整的认证例子如下:

StringsURI=String.format("mongodb://%s:%s@%s:%d/%s","user","password","localhost",27017,"mydb");MongoClientURIuri=newMongoClientURI(sURI);MongoClientmongoClient=newMongoClient(uri);DBdb=mongoClient.getDB("mydb");

四、获取一个集合

DBCollectioncoll=db.getCollection("mycol");

然后可以对指定的集合进行操作,例如,插入,删除,查找,更新文档等。

五、插入文档

例如,一个文档以Json来表示如下:

{“name”:“mongo”,“info”:{“ver”:“3.0”}}

现在需要插入到集合mycol中。为了插入到集合中,可以使用BasicDBObject构造一个文档。

BasicDBObjectdoc=newBasicDBObject("name","mongo").append("info",newBasicDBObject("ver","3.0"));coll.insert(doc);

六、查找文档

1. 通过findOne查找一个符合条件文档

通过findOne可以查找一个符合条件的文档。例如,对于上面的mycol集合,执行以下命令:

DBObjectmyDoc=coll.findOne();System.out.println(myDoc);

将输出mycol集合中的第一个文档。也可以通过指定findOne的查找参数,来查找符合查找条件的一个文档。

2. 通过find查找所有符合条件的文档

find用来查找符合条件的文档,它返回一个DBCursor对象,通过遍历DBCursor对象,可以获得所有符合查找条件的文档。

为了说明和测试,我们先插入一批以下格式的文档:

{“i”:value}for(inti=0;i<100;i++){coll.insert(newBasicDBObject("i",i));}

find的使用示例如下:

DBCursorcursor=coll.find();try{while(cursor.hasNext()){System.out.println(cursor.next());}}finally{cursor.close();}

会输出mycol集合中所有的文档。

也可以指定查找的条件,例如:

BasicDBObjectquery=newBasicDBObject("i",71);DBCursorcursor=coll.find(query);try{while(cursor.hasNext()){System.out.println(cursor.next());}}finally{cursor.close();}

对于查找条件中包括$操作符的情形,例如以下一条mongo shell命令:

db.coll.find({i:{$gte:50}});

可以使用DBObject生成查找条件,

//findallwherei>=50BasicDBObjectquery=newBasicDBObject("i",newBasicDBObject("$gte",50));DBCursorcursor=coll.find(query);try{while(cursor.hasNext()){System.out.println(cursor.next());}}finally{cursor.close();}

七、更新文档

BasicDBObjectquery=newBasicDBObject("i",70);BasicDBObjectup=newBasicDBObject("$set",newBasicDBObject("i",100));coll.update(query,up);

上面的语句将i为70的文档更新i的值等于100。

与我们常用的更新文档的mongo语句一样,DBCollection还包含了save,findAndModify等更新文档的方法,其使用方法在此不再赘述,可以参考API说明文档即可。

八、删除文档

可以通过生成一个DBObject对象来删除指定的文档,例如:

BasicDBObjectquery=newBasicDBObject("i",71);coll.remove(query);

上面的语句删除i为71的文档。

感谢你能够认真阅读完这篇文章,希望小编分享java使用mongodb数据库的方法内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!