本文使用的环境是: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/

二、安装Mongo

1.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 #以守护进程的方式运行,创建server进程

##master=true #单主从配置时设为主server

##salve=true ##单主从配置时设为从server

#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。在下次启动时可能提示错误,导致服务无法启动,这个时候能够通过运行:

  1. rm -f /app/hadoop/db/mongod.lock  

也即删除指定数据文件夹下的mongod.lock文件就可以。

正常停止方法:
kill  -2 PID
或者

  1. ./mongo -host ip:port  

先连接须要停止的服务,然后:

  1. >use  admin  
  2. >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<String> 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);
<pre name="code" class="java"> 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> T get(String cacheName, String key, Class<T> classOfT) {
DBCollection cache = this.db.getCollection(cacheName);
List<DBObject> 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<String> getKeys(String cacheName){
List<String> list = new ArrayList<String>();
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)))

 


mongoDB2.6,java使用具体解释的更多相关文章

  1. java常用英文解释

    java常用名词解释: OO: object-oriented ,面向对象 OOP:object-oriented programming,面向对象编程 Author:JCC Object:对象JDK ...

  2. Java多线程具体解释

    Java多线程具体解释 多线程简单介绍 概述 多线程(multithreading).是指从软件或者硬件上实现多个线程并发运行的技术.具有多线程能力的计算机因有硬件支持而可以在同一时间运行多于一个线程 ...

  3. Java到底是解释型还是编译型语言

    Java到底是解释型还是编译型语言? 定义 回答这个问题,我们首先来看下概念: 开发人员编写代码,语言是人类可理解的方式,是具有语义的,然而计算机无法理解和执行,因此需要做一层转换. 解释型语言: 运 ...

  4. Java keyword具体解释

    訪问控制修饰符号 1)        private 私有的 private keyword是訪问控制修饰符,能够应用于类.方法或字段(在类中声明的变量). 仅仅能在声明 private(内部)类.方 ...

  5. JAVA Calendar具体解释

    (在文章的最后,将会介绍Date类,假设有兴趣,能够直接翻到最后去阅读) 到底什么是一个 Calendar 呢?中文的翻译就是日历,那我们立马能够想到我们生活中有阳(公)历.阴(农)历之分.它们的差别 ...

  6. 微信公众平台java开发具体解释(project代码+解析)

    说明: 本次的教程主要是对微信公众平台开发人员模式的解说,网络上非常多类似文章,但非常多都让初学微信开发的人一头雾水,所以总结自己的微信开发经验,将微信开发的整个过程系统的列出,并对主要代码进行解说分 ...

  7. 用java字节码解释i++和++i(转)

    这几天抽着一些时间,把Java的class文件结构研究了一下,再后来就想起了这个令人厌烦的问题,想从字节码指令的角度看看,java到底是怎么处理这个的 先看一段java代码 package bishi ...

  8. 一个Java例子,解释清楚注解的作用

    原文出处:码农登陆 写在前面 今天聊的是注解,但其实单纯说注解,注解本身没有任何的作用.简单说和注释没啥区别,而它有作用的原因是:注解解释类,也就是相关对代码进行解释的特定类.一般这些类使用反射是可以 ...

  9. java线程具体解释

    线程与进程的差别 (1)程序是一段静态的代码,进程是程序的一次动态执行过程.它是操作系统资源调度的基本单位.线程是比进程更小的执行单位.一个进程在其执行过程中,能够产生多个线程.所以又称线程为&quo ...

随机推荐

  1. [android] 保存文件到SD卡

    /****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/d ...

  2. Java集合类根接口:Collection 和 Map

    前言 在前文中我们了解了几种常见的数据结构,这些数据结构有着各自的应用场景,并且被广泛的应用于编程语言中,其中,Java中的集合类就是基于这些数据结构为基础. Java的集合类是一些非常实用的工具类, ...

  3. JSJ—案例谈面向对象

    有人告诉我那里遍地都是对象——我们把所有的程序代码放在main()里面,事实上,那根本就不是面向对象的做法,在Java的面向对象中,我们也会看到类和对象的不同,以及对象是如何让你的生活更美好(至少程序 ...

  4. C#设计模式之十一享元模式(Flyweight Pattern)【结构型】

    一.引言 今天我们要讲[结构型]设计模式的第六个模式,该模式是[享元模式],英文名称是:Flyweight Pattern.还是老套路,先从名字上来看看.“享元”是不是可以这样理解,共享“单元”,单元 ...

  5. Java岗 面试考点精讲(基础篇01期)

    即将到来金三银四人才招聘的高峰期,渴望跳槽的朋友肯定跟我一样四处找以往的面试题,但又感觉找的又不完整,在这里我将把我所见到的题目做一总结,并尽力将答案术语化.标准化.预祝大家面试顺利. 术语会让你的面 ...

  6. C# 动态输出Dos命令执行结果

    本文以一个简单的小例子讲解如何将命令行信息实时的输出到文本框中.仅供学习分享使用,如有不足之处,还请指正. 概述 在C#程序开发过程中,有时需要运行其它的程序并获得输出的结果来进行进一步的处理.一般第 ...

  7. github上传流程图记录

    参考文章 http://blog.csdn.net/laozitianxia/article/details/50682100 首先你得先创建仓库 为仓库取一个名字,然后点击创建就会有一个仓库了, g ...

  8. 性能优化4--Bitmap内存优化

    1.Bitmap在Android虚拟机中的内存分配 在Android3.0之前,Bitmap的内存分配分为两部分,一部分是分配在Dalvik的VM堆中.而像素数据的内存是分配在Native堆中,而到了 ...

  9. Linux 无线网卡配置

    无线网卡常见的配置选项 某TL-WR842N路由器无线配置选项含义: 无线名称 路由器的无线(Wi-Fi)名称.无线密码 无线加密使用WPA2-PSK/WPA-PSK加密方式.AES加密算法,无线密码 ...

  10. [20190312]视图v$datafile字段OFFLINE_CHANGE#, ONLINE_CHANGE#.txt

    [20190312]视图v$datafile字段OFFLINE_CHANGE#, ONLINE_CHANGE#.txt --//视图v$datafile存在2个字段OFFLINE_CHANGE#, O ...