java连接mongodb

刚开始接触学习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数据库已经存在。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值