MongDB开发之路(三)--Java操作MongoDB

1、建立maven工程
步骤:略

2、导入MongoDB JDBC 驱动
• 你需要将 mongo-java-driver-3.2.2.jar (找到合适的版本)包含在你的 classpath 中。。
• 国内 mongodb-driver jar 下载地址:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

MongoDB驱动包依赖如下所示。

org.mongodb
mongo-java-driver
3.8.1
compile

如果你忘记了MongoDB的连接端口,那么你可以使用db.getMongo()来查看当前MongoDB数据库的端口号。

(1)无密码认证
下面是一个无需密码认证的Java程序:
package mongoDBTestPro;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“yzh”);
System.out.println(“connect to MongoDB success! and the mongoDataBase is:”+mongoDataBase.getName());
}catch(Exception e){
e.printStackTrace();
}
}
}

如果你希望你的mongoDB进行密码权限认证,那么可以用下面的方式来操作:
① 首先在无需验证的情况下进入admin数据库:
创建yzh用户:
db.createUser({user:”yzh”,pwd:”a”,roles:[{role:”userAdminAnyDatabase”,db:”admin”},{role:”__system”,db:”admin”}]})
这里注意:
1、有的博客教程中说使用 db.addUser(“root”,”123456”) 这个函数,但是在3.6版本中已经不支持这个方法了,只能使用createUser函数
2、 在设置roles的时候,一定要加上 __system (有两个下划线) 这个角色。

② 重装服务
首先进入到mongoDB的bin目录下面:
mongod –auth –logpath “D:\development\mongoDB\data\log\mongo.log” –dbpath “D:\development\mongoDB\data” –reinstall
说明:因为之前使用mongod安装windows服务的时候默认是不采用验证的,所以在设置了数据库用户之后需要重新安装一下。这里logpath是日志文件目录,dbpath是数据文件的目录 –auth选项表示使用验证,如果想要不适用验证,只要不用 –auth 选项再重新安装一次服务就可以了。然后重新启动MongoDB连接服务。

③ 重启mongo.exe
此时,由于MongoDB开启了权限密码认证,因此,执行show dbs时将报告下面的错误:

show dbs
2018-08-28T02:14:16.787+0800 E QUERY [thread1] Error: listDatabases failed:{
“ok” : 0,
“errmsg” : “not authorized on admin to execute command { listDatabases:
1.0 }”,
“code” : 13,
“codeName” : “Unauthorized”
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:788:19
shellHelper@src/mongo/shell/utils.js:678:15
@(shellhelp2):1:1
可以看到,此时由于没有认证将会提示not authorized on admin to execute command的错误。

④ 执行验证
db.auth(“yzh”,”a”)返回1时表示验证成功,然后就可以执行各种命令

(2)创建集合
package mongoDBTestPro;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“test”);
//3.创建集合为userInfo
mongoDataBase.createCollection(“userInfo”);
System.out.println(“connect to MongoDB success! and the mongoDataBase is:”+mongoDataBase.getName());
}catch(Exception e){
e.printStackTrace();
}
}
}

(3)删除集合
package mongoDBTestPro;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“test”);
//3.删除名为userInfo的集合
mongoDataBase.getCollection(“userInfo”).drop();
//MongoCollection collection = mongoDataBase.getCollection(“userInfo”);
System.out.println(“connect to MongoDB success! and the mongoDataBase is:”+mongoDataBase.getName());
}catch(Exception e){
e.printStackTrace();
}
}
}

(4)添加文档
① 增加一个文档
package mongoDBTestPro;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“test”);
//获得集合
MongoCollection collection = mongoDataBase.getCollection(“userInfo”);
//获取文档对象
Document document = new Document();
//设置文档内容
document.put(“userName”,”yzh”);
document.put(“password”,”123”);
document.put(“age”,23);
document.put(“sex”,”男”);
document.put(“tel”,”12345678”);
document.put(“email”,”[email protected]”);
//插入文档
collection.insertOne(document);
System.out.println(“connect to MongoDB success! and the mongoDataBase is:”+mongoDataBase.getName());
}catch(Exception e){
e.printStackTrace();
}
}
}
测试:

show collections
test
userInfo
db.userInfo.find().pretty()
{
“_id” : ObjectId(“5b87326e36a100182490e886”),
“userName” : “yzh”,
“password” : “123”,
“age” : 23,
“sex” : “男”,
“tel” : “12345678”,
“email” : “[email protected]
}

(5)批量插入
package mongoDBTestPro;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“test”);
//3.获得集合
MongoCollection collection = mongoDataBase.getCollection(“userInfo”);
List list = new ArrayList();;
Document doc = new Document();
for(int i = 0;i<5;i++){
doc = new Document();
doc.put(“userName”,”yzh”+i);
doc.put(“password”,”123”+i);
doc.put(“age”,23+i);
doc.put(“sex”,”男”);
doc.put(“tel”,”12345678”+i);
doc.put(“email”,”123”+i+”@qq.com”);
list.add(doc);
}
//4.批量插入文档
collection.insertMany(list);
}catch(Exception e){
e.printStackTrace();
}
}
}

(6)查询文档
package mongoDBTestPro;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“test”);
//3.获得集合
MongoCollection collection = mongoDataBase.getCollection(“userInfo”);
//4.获取游标
MongoCursor cursor = collection.find().iterator();
//5.遍历数据
while(cursor.hasNext()){
Document document = cursor.next();
System.out.println(“userName:”+document.get(“userName”)+” “+”passwrod:”+document.get(“password”)+” age:”+document.get(“age”)+” “+”sex:”+document.get(“sex”)+” “+”tel:”+document.get(“tel”)+” email:”+document.get(“email”));
}
}catch(Exception e){
e.printStackTrace();
}
}
}
/**output:
userName:yzh0 passwrod:1230 age:23 sex:男 tel:123456780 email:[email protected]
userName:yzh1 passwrod:1231 age:24 sex:男 tel:123456781 email:[email protected]
userName:yzh2 passwrod:1232 age:25 sex:男 tel:123456782 email:[email protected]
userName:yzh3 passwrod:1233 age:26 sex:男 tel:123456783 email:[email protected]
userName:yzh4 passwrod:1234 age:27 sex:男 tel:123456784 email:[email protected]
*/

② 模糊匹配:模糊查询
package mongoDBTestPro;
import java.util.regex.Pattern;
import org.bson.Document;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC2 {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“test”);
//3.获得集合
MongoCollection collection = mongoDataBase.getCollection(“userInfo”);
BasicDBObject query = new BasicDBObject();
//查询用户名中带yzh的文档
String pattern = “yzh”;
//4.创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
query.put(“userName”,r);
FindIterable findIterable = collection.find(query);
//5.获取游标
MongoCursor cursor = findIterable.iterator();
while(cursor.hasNext()){
Document document = cursor.next();
System.out.println(“userName:”+document.get(“userName”)+” “+”passwrod:”+document.get(“password”)+
” age:”+document.get(“age”)+” “+”sex:”+document.get(“sex”)+” “+”tel:”+document.get(“tel”)+
” email:”+document.get(“email”));
}
System.out.println(“connect to MongoDB success! and the mongoDataBase is:”+mongoDataBase.getName());
}catch(Exception e){
e.printStackTrace();
}
}
}

(7)更新文档
①更新一条文档
package mongoDBTestPro;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
public class MongoDBJDBC {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“test”);
//3.获得集合
MongoCollection collection = mongoDataBase.getCollection(“userInfo”);
//4.获取password为1230的文档
Bson oldBson = Filters.eq(“password”,”1230”);
//5.更新文档
Bson newBson = new Document(“$set”,new Document(“password”,”123yzh”));
collection.updateOne(oldBson,newBson);
//6.获取游标
MongoCursor cursor = collection.find().iterator();
while(cursor.hasNext()){
Document document = cursor.next();
System.out.println(“userName:”+document.get(“userName”)+” “+”passwrod:”+document.get(“password”)+
” age:”+document.get(“age”)+” “+”sex:”+document.get(“sex”)+” “+”tel:”+document.get(“tel”)+
” email:”+document.get(“email”));
}
System.out.println(“connect to MongoDB success! and the mongoDataBase is:”+mongoDataBase.getName());
}catch(Exception e){
e.printStackTrace();
}
}
}
/**output:
userName:yzh0 passwrod:123yzh age:23 sex:男 tel:123456780 email:[email protected]
userName:yzh1 passwrod:1231 age:24 sex:男 tel:123456781 email:[email protected]
userName:yzh2 passwrod:1232 age:25 sex:男 tel:123456782 email:[email protected]
userName:yzh3 passwrod:1233 age:26 sex:男 tel:123456783 email:[email protected]
userName:yzh4 passwrod:1234 age:27 sex:男 tel:123456784 email:[email protected]
*/

② 支持多条更新

package mongoDBTestPro;
import java.util.regex.Pattern;
import org.bson.Document;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC2 {
    public static void main(String[] args) {
        try{
            //1.连接到MongoDB服务
            MongoClient mongoClient = new MongoClient( "127.0.0.1" , 27017 );
            //2.连接到数据库
            MongoDatabase mongoDataBase = mongoClient.getDatabase("test");
            //3.获得集合
            MongoCollection<Document> collection = mongoDataBase.getCollection("userInfo");
            BasicDBObject query = new BasicDBObject();
            String pattern = "yzh";
            //4.创建 Pattern 对象
            Pattern r = Pattern.compile(pattern);
            query.put("userName",r);
            //更新名字中带yzh的所有文档
            collection.updateMany(query,new Document("$set",new Document("password","123yzh")));
            //5.获取游标
            MongoCursor<Document> cursor = collection.find().iterator();
            while(cursor.hasNext()){
                Document document = cursor.next();
                System.out.println("userName:"+document.get("userName")+" "+"passwrod:"+document.get("password")+
                        " age:"+document.get("age")+" "+"sex:"+document.get("sex")+" "+"tel:"+document.get("tel")+
                        " email:"+document.get("email"));
            }
            System.out.println("connect to MongoDB success! and the mongoDataBase is:"+mongoDataBase.getName());
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
/**output:
userName:yzh0 passwrod:123yzh age:23 sex:男 tel:123456780 email:1230@qq.com
userName:yzh1 passwrod:123yzh age:24 sex:男 tel:123456781 email:1231@qq.com
userName:yzh2 passwrod:123yzh age:25 sex:男 tel:123456782 email:1232@qq.comerName:yzh3 passwrod:123yzh age:26 sex:男 tel:123456783 email:1233@qq.com
userName:yzh4 passwrod:123yzh age:27 sex:男 tel:123456784 email:1234@qq.com
userName:sss passwrod:123sss age:23.0 sex:男 tel:123456 email:123@qq.com
**/8)删除文档

package mongoDBTestPro;
import java.util.regex.Pattern;
import org.bson.Document;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class MongoDBJDBC3 {
public static void main(String[] args) {
try{
//1.连接到MongoDB服务
MongoClient mongoClient = new MongoClient( “127.0.0.1” , 27017 );
//2.连接到数据库
MongoDatabase mongoDataBase = mongoClient.getDatabase(“test”);
//3.获得集合
MongoCollection collection = mongoDataBase.getCollection(“userInfo”);
BasicDBObject query = new BasicDBObject();
String pattern = “yzh”;
//4.创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
query.put(“userName”,r);
//5.删除名字中带yzh的所有文档
collection.deleteMany(query);
//5.获取游标
MongoCursor cursor = collection.find().iterator();
while(cursor.hasNext()){
Document document = cursor.next();
System.out.println(“userName:”+document.get(“userName”)+” “+”passwrod:”+document.get(“password”)+
” age:”+document.get(“age”)+” “+”sex:”+document.get(“sex”)+” “+”tel:”+document.get(“tel”)+
” email:”+document.get(“email”));
}
System.out.println(“connect to MongoDB success! and the mongoDataBase is:”+mongoDataBase.getName());
}catch(Exception e){
e.printStackTrace();
}
}
}
“`

猜你喜欢

转载自blog.csdn.net/yzh18373476791/article/details/82253696