本文使用的环境是:win7_64+eclipse+maven 一、准备工作 下载java驱动包 驱动包下载地址:http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver mongodb下载:http://www.mongodb.org/ 在线api:http://docs.mongodb.org/manual/applications/dr
本文使用的环境是:win7_64+eclipse+maven一、准备工作下载java驱动包
驱动包下载地址:http://mvnrepository.com/artifact/org.mongodb/mongo-java-driver
mongodb下载:http://www.mongodb.org/
在线api:http://docs.mongodb.org/manual/applications/drivers/二、安装mongo1.windows下安装方式:
安装mongo数据库:
第一步:下载安装包:如果是win系统,注意是64位还是32位版本的,请选择正确的版本。
第二步:新建目录“d:\mongodb”,解压下载到的安装包,找到bin目录下面全部.exe文件,拷贝到刚创建的目录下。
第三步:在“d:\mongodb”目录下新建“data”文件夹,它将会作为数据存放的根文件夹。
配置mongo服务端:
打开cmd窗口,按照如下方式输入命令:
> d:
> cd d:\mongodb
> mongod --dbpath d:\mongodb\data
启动成功后从浏览器访问:http://localhost:27017/
标明windows下的mongodb已经启动成功;
2.linux安装方式:
下载后解压确保数据库目录大小剩余空间在3g以上;
这里采用配置文件方式启动:在mongodb的根目录创建一个名为:mongodb.conf的文件,内容如下:
#fork=true #以守护进程的方式运行,创建服务器进程##master=true #单主从配置时设为主服务器##salve=true ##单主从配置时设为从服务器#replset=blort #设置富本集的名字#shardsvr=true #设置是否分片#repairpath = /mongodb2.6.3/repair #pidfilepath = /mongodb2.6.3/mongodb.pid #sysinfo = true #verbose = true #cpu = true #network and security set #management #nohttpinterface = true #rest = true #syncdelay = 5#directory and relavent set dbpath = /mongodb2.6.3/data #数据库路径logpath = /mongodb2.6.3/logs/mongodb.log #日志输出文件路径logappend = true #日志输出方式directoryperdb = true noauth = true port = 8888 #端口号maxconns = 1024 fork = true quota = true quotafiles = 1024 nssize = 16
启动方式如下:/mongodb2.6.3/bin/mongod -f /mongodb2.6.3/mongodb.conf
记得开启linux的访问端口:
#vi /etc/sysconfig/iptables
yy复制一行
p粘贴
修改端口
#service iptables restart
设置开机自启动
#echo /mongodb2.6.3/bin/mongod -f /mongodb2.6.3/mongodb.config >>/etc/rc.local
数据库启动完成,接下来是创建数据库和集合:
mongo --port 8888
> show dbs
admin (empty)
local 0.078gb
> use admin(切换管理用户)
switched to db admin
> db.mymongo(创建数据库)
admin.mymongo
> db.adduser(root,root)(添加用户)
warning: the 'adduser' shell helper is deprecated. please use 'createuser' instead
successfully added user: { user : root, roles : [ root ] }
> db.auth(root,root)(添加登陆用户)
1
> db.createcollection(t_users)(添加表)
{ ok : 1 }
> show collections(显示表)
system.indexes
system.users
system.version
t_users
> db.t_users.save({age:21})(存储数据)
writeresult({ ninserted : 1 })
> db.t_users.find()(查询所有数据)
{ _id : objectid(53a2e45e4a674863b4ac5398), age : 21 }
mongodb 删除数据库
use mymongo;
db.dropdatabase();
mongodb删除表
db.t_users.drop();
mongodb服务停止:
在linux下大家停止很多服务都喜欢直接kill -9 pid,但是对于mongodb如果执行了kill -9 pid,在下次启动时可能提示错误,导致服务无法启动,这个时候可以通过执行:
java代码
rm -f /app/hadoop/db/mongod.lock 也即删除指定数据目录下的mongod.lock文件即可。
正常停止方法:
kill -2 pid
或者
java代码
./mongo -host ip:port 先连接需要停止的服务,然后:
java代码
>use admin >db.shutdownserver();
这样也可以正常停止服务。三、java操作mongodb示例1、 建立test.java,完成简单的mongodb数据库操作
try { mongo mg = new mongoclient(192.168.186.129, 8888); db db = mg.getdb(mymongo);// 用于判断用户登录// if(!db.authenticate(sdap, sdap123.tochararray())){// 方法已经不建议使用// } set collectionnames = db.getcollectionnames(); for (string string : collectionnames) { system.out.println(string); } dbcollection collection2 = db.getcollection(t_users2); collection2 = db.getcollection(t_users2); carpasitionobj u = new carpasitionobj(); u.setla(1231d); u.setlo(42342d); u.setpn(京1aaa); u.settp(12); string obj2json = jsonutils.getsingletoninstance().obj2json(u); basicdbobject dbobject1=new basicdbobject(); dbobject1.put(key, 123131); dbobject1.put(value, obj2json); collection2.save(dbobject1); basicdbobject dbobject=new basicdbobject(); dbobject.put(key, 123131); dbcursor find = collection2.find(dbobject); while (find.hasnext()) { dbobject next = find.next(); string key = (string)next.get(key); string json = (string)next.get(value); system.out.println(key); carpasitionobj formjson = jsonutils.getsingletoninstance().formjson(json, carpasitionobj.class); system.out.println(formjson.getpn()); }} catch (unknownhostexception e) { e.printstacktrace(); }
下面贴上我自己的mongodb的工具类:
/** * project name:main * file name:mongodbcachemanagerutil.java * package name:com.hdsx.taxi.driver.cq.cache * date:2014年4月9日下午12:49:55 * copyright (c) 2014, sid jenkins all rights reserved. * **/package com.hdsx.taxi.driver.cq.mongodb;import java.net.unknownhostexception;import java.util.arraylist;import java.util.list;import org.apache.log4j.logger;import com.hdsx.taxi.driver.cq.module.initservletmodule;import com.hdsx.taxi.driver.cq.tcp.util.jsonutils;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.mongoclient;/** * classname:mongodbcachemanagerutil * function: todo add function. * reason: todo add reason. * date: 2014年4月9日 下午12:49:55 * @author sid * @see */public class mongodbmanagerutil { private static final logger logger = logger.getlogger(mongodbmanagerutil.class); private mongo mg = null; private db db = null; private volatile static mongodbmanagerutil singleton = null; public static final string key = key; public static final string value = value; public static mongodbmanagerutil getsingletoninstance() { if (singleton == null) { synchronized (mongodbmanagerutil.class) { if (singleton == null) { singleton = new mongodbmanagerutil(); } } singleton = new mongodbmanagerutil(); } return singleton; } private mongodbmanagerutil() { if (logger.isdebugenabled()) { logger.debug(mongodbcachemanagerutil() - start ); //$non-nls-1$ } try { mg = new mongoclient(192.168.186.129, 8888); db = mg.getdb(mymongo); } catch (unknownhostexception e) { e.printstacktrace(); } if (logger.isdebugenabled()) { logger.debug(mongodbcachemanagerutil() - end); //$non-nls-1$ } } /** * * getcache:(获取缓存对象). * * @author sid * @param name * @return */ public dbcollection getcache(string name){ return this.db.getcollection(name); } /** * * put:(在指定缓存对象中加入需要缓存的对象). * * @author sid * @param cachename * @param key * @param value */ public void put(string cachename, string key, object value) { dbcollection cache = this.db.getcollection(cachename); string obj2json = jsonutils.getsingletoninstance().obj2json(value); basicdbobject obj = new basicdbobject(); obj.put(mongodbmanagerutil.key, key); obj.put(mongodbmanagerutil.value, obj2json); basicdbobject basicdbobject = new basicdbobject(mongodbmanagerutil.key, key); int size = cache.find(basicdbobject).count(); if (size==0) { cache.save(obj); }else{ cache.update(basicdbobject, obj); } } /** * * get:(根据key从指定缓存对象中获取对象). * * @author sid * @param cachename * @param key * @return */ public t get(string cachename, string key, class classoft) { dbcollection cache = this.db.getcollection(cachename); list array = cache.find(new basicdbobject(mongodbmanagerutil.key, key)).toarray(); if (array == null||array.size()==0) { return null; } dbobject dbobject = array.get(0); string json = (string)dbobject.get(mongodbmanagerutil.value); return jsonutils.getsingletoninstance().formjson(json, classoft); } /** * * remove:(从指定缓存对象中清除对象). * * @author sid * @param cachename * @param key */ public void remove(string cachename, string key) { dbcollection cache = this.db.getcollection(cachename); cache.remove(new basicdbobject(mongodbmanagerutil.key,key)); } /** * * getkeys:(获取keys列表). * * @author sid * @param cachename * @return */ public list getkeys(string cachename){ list list = new arraylist(); dbcollection cache = this.db.getcollection(cachename); dbcursor find = cache.find(); while (find.hasnext()) { dbobject next = find.next(); string key = (string) next.get(mongodbmanagerutil.key); list.add(key); } return list; } /** * * containskey:(判断消息是否存在). * * @author sid * @param cachename * @param key * @return */ public boolean containskey(string cachename,string key){ dbcollection cache = this.db.getcollection(cachename); basicdbobject basicdbobject = new basicdbobject(mongodbmanagerutil.key, key); int size = cache.find(basicdbobject).count(); if (size==0) { return false; }else{ return true; } }}除了save、insert、update;mongodb还有remove等操作
其中find方法可以指定查询条件:
大于等于:$gte
小于等于:$lte
不等于:$ne
demo:users.find(new basicdbobject(age, new basicdbobject($gte, 24)))