您的位置:首页 > 数据库 > Mongodb

java连接mongodb

2016-08-13 00:01 176 查看
刚开始接触学习mongodb,之前熟悉了mongodb的安装和配置。今天开始着手java连接mongodb,进行一些简单的数据操作。

新建一个java文件,导入mongodb的驱动jar包mongo-2.10.1.jar。

package mongodb;

import java.net.UnknownHostException;
import java.util.Set;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

/**
* java连接mongodb
* @author Administrator
*
*/
public class MongoTest {
public static void main(String[] args) throws UnknownHostException,MongoException{
//连接本地数据库
Mongo m=new Mongo();
//创建名为new_test_db的数据库
DB db=m.getDB("new_test_db");
//获取new_test_db中的集合(类似于获取关系数据库中的表)
Set<String>cols=db.getCollectionNames();
//打印出new_test_db中的集合,这里应当为Null
for (String str : cols) {
System.out.println(str);
}

//创建一个叫做“new_test_col”的集合
DBCollection collection=db.getCollection("new_test_col");
//初始化一个基本DB对象,最终插入数据库的就是这个DB对象
BasicDBObject obj=new BasicDBObject();
//放入几个键值对
obj.put("from", "火星");
obj.put("to", "地球");
obj.put("subject", "火星爱地球");
//插入对象
collection.insert(obj);
//查看一条记录,findOne()=find().limit(1);
DBObject dbobj=collection.findOne();
//打印出刚才插入的数据
System.out.println(dbobj);

//插入9条{ranking:i}的数据
for(int i=0;i<9;i++){
collection.insert(new BasicDBObject().append("ranking", i));
}

//打印集合中的数据总数,这里应当输出10
System.out.println(collection.getCount());

//遍历集合,find()方法返回的是一个游标cursor,和关系型数据库概念想相似
DBCursor cursor=collection.find();
//使用这个游标遍历数据
while(cursor.hasNext()){
System.out.println(cursor.next());
}

//简单的条件查询,查询ranking为1的记录
BasicDBObject query=new BasicDBObject();
query.put("ranking", 1);
cursor=collection.find(query);
while(cursor.hasNext()){
System.out.println(cursor.next());
}
//查询ranking大于5小于9的记录
query=new BasicDBObject();
query.put("ranking", new BasicDBObject("$gt",5).append("$lt", 9));
cursor=collection.find(query);
while(cursor.hasNext()){
System.out.println(cursor.next());
}

//删除测试数据库
m.dropDatabase("new_test_db");
}
}


运行程序,控制台打印出结果



我简单地以为mongodb的程序运行与本地是否安装了mongodb无关,因为我找不到代码中连接数据库的一些特征。比如说url,username,password,driverClass之类的。



并不是这样。

cmd,net stop MongoDB.

再一次运行程序,控制台报错。

八月 12, 2016 11:34:02 下午

com.mongodb.DBTCPConnector initDirectConnection
警告: Exception executing isMaster command on

/127.0.0.1:27017
java.io.IOException: couldn't connect to

[/127.0.0.1:27017] bc:java.net.ConnectException:

Connection refused: connect
at com.mongodb.DBPort._open

(DBPort.java:214)
at com.mongodb.DBPort.go(DBPort.java:107)
at com.mongodb.DBPort.go(DBPort.java:88)
at com.mongodb.DBPort.findOne

(DBPort.java:143)
at com.mongodb.DBPort.runCommand

(DBPort.java:148)
at

com.mongodb.DBTCPConnector.initDirectConnection

(DBTCPConnector.java:548)
at com.mongodb.DBTCPConnector.checkMaster

(DBTCPConnector.java:527)
at com.mongodb.DBTCPConnector.innerCall

(DBTCPConnector.java:277)
at com.mongodb.DBTCPConnector.call

(DBTCPConnector.java:257)
at com.mongodb.DBApiLayer

$MyCollection.__find(DBApiLayer.java:310)
at com.mongodb.DBApiLayer

$MyCollection.__find(DBApiLayer.java:295)
at com.mongodb.DB.getCollectionNames

(DB.java:412)
at mongodb.MongoTest.main

(MongoTest.java:26)

八月 12, 2016 11:34:03 下午 com.mongodb.DBPortPool

gotError
警告: emptying DBPortPool to /127.0.0.1:27017 b/c of

error
java.io.IOException: couldn't connect to

[/127.0.0.1:27017] bc:java.net.ConnectException:

Connection refused: connect
at com.mongodb.DBPort._open

(DBPort.java:214)
at com.mongodb.DBPort.go(DBPort.java:107)
at com.mongodb.DBPort.call(DBPort.java:74)
at com.mongodb.DBTCPConnector.innerCall

(DBTCPConnector.java:286)
at com.mongodb.DBTCPConnector.call

(DBTCPConnector.java:257)
at com.mongodb.DBApiLayer

$MyCollection.__find(DBApiLayer.java:310)
at com.mongodb.DBApiLayer

$MyCollection.__find(DBApiLayer.java:295)
at com.mongodb.DB.getCollectionNames

(DB.java:412)
at mongodb.MongoTest.main

(MongoTest.java:26)

Exception in thread "main"

com.mongodb.MongoException$Network: can't call

something : /127.0.0.1:27017/new_test_db
at com.mongodb.DBTCPConnector.innerCall

(DBTCPConnector.java:295)
at com.mongodb.DBTCPConnector.call

(DBTCPConnector.java:257)
at com.mongodb.DBApiLayer

$MyCollection.__find(DBApiLayer.java:310)
at com.mongodb.DBApiLayer

$MyCollection.__find(DBApiLayer.java:295)
at com.mongodb.DB.getCollectionNames

(DB.java:412)
at mongodb.MongoTest.main

(MongoTest.java:26)
Caused by: java.io.IOException: couldn't connect to

[/127.0.0.1:27017] bc:java.net.ConnectException:

Connection refused: connect
at com.mongodb.DBPort._open

(DBPort.java:214)
at com.mongodb.DBPort.go(DBPort.java:107)
at com.mongodb.DBPort.call(DBPort.java:74)
at com.mongodb.DBTCPConnector.innerCall

(DBTCPConnector.java:286)
... 5 more


连接失败,说明需要本地mongodb环境的支持。

将上面的代码最后一句删除语句:m.dropDatabase(“new_test_db”);注释掉。运行代码。

cmd,mongo,show dbs



新建的mongodb数据库已经存在。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb