一、下载jar包

  http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

二、代码实现

 package com.xbq.mongodb;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bson.types.ObjectId;
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.util.JSON; /**
* @ClassName: MongoDBTest
* @Description: TODO MongoDB 增删改查 操作,包含批量操作
* @author xbq
* @version 1.0
* @date 2017-4-5 上午11:50:06
*/
public class MongoDBTest { private static final String HOST = "192.168.242.129";
private static final int PORT = 27017;
private static final String DB_NAME = "testDB";
private static Mongo mongo;
private static DB db; static {
// 连接到MongoDB
mongo = new Mongo(HOST, PORT);
// 打开数据库 testDB
db = mongo.getDB(DB_NAME);
} public static void main(String[] args) {
// 获取集合 xbqTable,若该集合不存在,mongoDB将自动创建该集合
DBCollection dbCollection = db.getCollection("testTable"); // 查询该数据库所有的集合名
for(String name : mongo.getDatabaseNames()){
System.out.println(name);
} // addOne(dbCollection);
// addList(dbCollection);
// addByJson(dbCollection); // deleteOne(dbCollection);
// deleteByIn(dbCollection);
// deleteAll(dbCollection); // updateOne(dbCollection);
// updateMulti(dbCollection); // queryOne(dbCollection);
// queryPage(dbCollection);
// queryRange(dbCollection);
queryList(dbCollection); } // ====================================查询开始==============================================
/**
* @Title: queryOne
* @Description: TODO 查询 name为 张三的 一条记录
* @param dbCollection
* @return: void
*/
public static void queryOne(DBCollection dbCollection){
DBObject documents = new BasicDBObject("name","张三");
DBObject result = dbCollection.findOne(documents);
System.out.println(result);
} /**
* @Title: queryPage
* @Description: TODO 分页查询 , 查询 跳过前2条 后的 3条 数据
* @param dbCollection
* @return: void
*/
public static void queryPage(DBCollection dbCollection){
DBCursor cursor = dbCollection.find().skip(2).limit(3);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
} /**
* @Title: queryRange
* @Description: TODO 范围查询,查询 第3条 到 第5条 之间的记录
* @param dbCollection
* @return: void
*/
public static void queryRange(DBCollection dbCollection) {
DBObject range = new BasicDBObject();
range.put("$gte", 50);
range.put("$lte", 52); DBObject dbObject = new BasicDBObject();
dbObject.put("age", range);
DBCursor cursor = dbCollection.find(dbObject);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
} /**'
* @Title: queryList
* @Description: TODO 查询出全部的 记录
* @param dbCollection
* @return: void
*/
public static void queryList(DBCollection dbCollection) {
DBCursor cursor = dbCollection.find();
DBObject dbObject = null;
while(cursor.hasNext()){
dbObject = cursor.next();
System.out.println(dbObject);
}
} // ====================================增加开始==============================================
/**
* @Title: addOne
* @Description: TODO 新增 一条记录
* @param dbCollection
* @return: void
*/
public static void addOne(DBCollection dbCollection){
DBObject documents = new BasicDBObject("name","张三").append("age", 45).append("sex", "男").append("address",
new BasicDBObject("postCode", 100000).append("street", "深南大道888号").append("city", "深圳"));
dbCollection.insert(documents);
} /**
* @Title: addList
* @Description: TODO 批量新增 记录 , 增加的记录 中 可以使用各种数据类型
* @param dbCollection
* @return: void
*/
public static void addList(DBCollection dbCollection){
List<DBObject> listdbo= new ArrayList<DBObject>();
DBObject dbObject = new BasicDBObject();
dbObject.put("name", "老王");
// 可以直接保存List类型
List<String> list = new ArrayList<String>();
list.add("非隔壁老王");
dbObject.put("remark", list);
listdbo.add(dbObject); dbObject = new BasicDBObject();
// 可以直接保存map
Map<String,List<String>> map = new HashMap<String,List<String>>();
List<String> hobbys = new ArrayList<String>();
hobbys.add("看花");
hobbys.add("采花");
map.put("爱好", hobbys);
dbObject.put("hobby", map);
listdbo.add(dbObject); dbObject = new BasicDBObject();
dbObject.put("name", "老张");
dbObject.put("age", 52);
dbObject.put("job", "看守老王");
dbObject.put("remark", new BasicDBObject("address", "广东省深圳市").append("street", "深南大道888号"));
listdbo.add(dbObject); dbCollection.insert(listdbo);
} /**
* @Title: addByJson
* @Description: TODO json转对象后 ,执行新增
* @param dbCollection
* @return: void
*/
public static void addByJson(DBCollection dbCollection){
String json = "{ \"name\" : \"王五\" , \"age\" : 66 , \"job\" : \"看守老王\" , \"remark\" : { \"address\" : \"广东省深圳市\" , \"street\" : \"深南大道888号\"}}";
DBObject dbObject = (DBObject) JSON.parse(json);
dbCollection.insert(dbObject);
} // ====================================修改开始==============================================
/**
* @Title: update
* @Description: TODO 修改指定记录
* @param dbCollection
* @return: void
*/
public static void updateOne(DBCollection dbCollection) {
// 先根据id查询将 这条 记录查询出来
DBObject qryResult = dbCollection.findOne(new ObjectId("58e4a11c6c166304f0635958"));
// 修改指定的值
qryResult.put("age", 55); DBObject olddbObject = new BasicDBObject();
olddbObject.put("_id", new ObjectId("58e4a11c6c166304f0635958"));
dbCollection.update(olddbObject, qryResult);
} /**
* @Title: updateMulti
* @Description: TODO 修改 多条记录
* @param dbCollection
* @return: void
*/
public static void updateMulti(DBCollection dbCollection) {
DBObject newdbObject = new BasicDBObject();
newdbObject.put("name", "张三");
newdbObject.put("address", "广东深圳");
newdbObject.put("remark", "张三是一个NB的Coder"); DBObject olddbObject = new BasicDBObject();
olddbObject.put("name", "张三");
// 需要加上这个
DBObject upsertValue = new BasicDBObject("$set", newdbObject);
// 后面的两个参数:1.若所更新的数据没有,则插入 ; 2、同时更新多个符合条件的文档(collection)
dbCollection.update(olddbObject, upsertValue, true, true);
} // ====================================删除开始==============================================
/**
* @Title: deleteFirst
* @Description: TODO 删除第一个
* @param
* @return: void
*/
public static void deleteFirst(DBCollection dbCollection){
DBObject dbObject = dbCollection.findOne();
dbCollection.remove(dbObject);
} /**
* @Title: deleteOne
* @Description: TODO 删除指定的一条记录
* @param dbCollection
* @return: void
*/
public static void deleteOne(DBCollection dbCollection){
DBObject dbObject = new BasicDBObject();
dbObject.put("_id", new ObjectId("58e49c2d6c166309e0d50484"));
dbCollection.remove(dbObject);
} /**
* @Title: deleteByIn
* @Description: TODO 删除多条记录 例如:select * from tb where name in('12','34')
* @param dbCollection
* @return: void
*/
public static void deleteByIn(DBCollection dbCollection) {
List<String> list = new ArrayList<String>();
list.add("老张");
list.add("老王");
list.add("张三");
DBObject dbObject = new BasicDBObject("$in", list); DBObject delObject = new BasicDBObject();
delObject.put("name", dbObject);
dbCollection.remove(delObject);
} /**
* @Title: deleteAll
* @Description: TODO 删除全部的记录
* @param dbCollection
* @return: void
*/
public static void deleteAll(DBCollection dbCollection){
DBCursor cursor = dbCollection.find();
while(cursor.hasNext()){
dbCollection.remove(cursor.next());
}
}
}

三、源码下载

  点我下载

MongoDB(二)-- Java API 实现增删改查的更多相关文章

  1. Hadoop基础-HDFS的API实现增删改查

    Hadoop基础-HDFS的API实现增删改查 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客开发IDE使用的是Idea,如果没有安装Idea软件的可以去下载安装,如何安装 ...

  2. 05_Elasticsearch 单模式下API的增删改查操作

    05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...

  3. GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)

    运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGe ...

  4. Elasticsearch 单模式下API的增删改查操作

    <pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...

  5. Elasticsearch学习系列之单模式下API的增删改查操作

    这里我们通过Elasticsearch的marvel插件实现单模式下API的增删改查操作 索引的初始化操作 创建索引之前可以对索引进行初始化操作,比如先指定shard数量以及replicas的数量 代 ...

  6. Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

    前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...

  7. nodejs笔记五--MongoDB基本环境配置及增删改查;

    一.基本环境配置: 1,首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,然后一步一步next安装,当然可以自己更改安装目录:安装完成之后,配置环境变量 ...

  8. java DMO及增删改查代码的自动生成

    在web开发过程中,尤其是后台管理系统的开发中,少不了增删改成的基础操作,原来我自己的做法是一份一份的拷贝粘贴,然后修改其中的不同,然而这样既枯燥无味又浪费了大量的时间,所以根据自己项目结构的特点写了 ...

  9. 百度鹰眼Java接口调用增删改查实例

    因感觉百度鹰眼的使用场景比较符合实际业务,于是对百度鹰眼做了简单功能调试.刚开始使用springframework封装的RestTemplate,但是测试提示ak参数不存在.后又试了几种方法,均提示a ...

随机推荐

  1. 冒泡排序——PowerShell版

    继续读啊哈磊算法有感系列.上一篇是桶排序,在结尾总结了一下简化版桶排序的缺点.这一篇来说一下冒泡排序,冒泡排序可以很好的克服桶排序的缺点.下面我们先来说说冒泡排序的过程与思想—— 冒泡排序的过程: 第 ...

  2. .NET项目web自动化测试实战——Selenium 2.0

    PS:这次用公司的项目来练手,希望公司不会起诉我,因为我绝对是抱着学习的态度,没有任何恶意.仅供交流学习. 该项目是基于SharePoint平台所开发的门户网站,为了切身感受一下Selenium 2. ...

  3. binutils工具集之---addr2line

    addr2line用于得到程序指令地址所对应的函数,以及函数所在的源文件名和行号. 在不少嵌入式开发环境中,编译器的名称往往不是gcc,而是想arm-rtems-gcc这样的,对于这种命名形式的编译器 ...

  4. git hook部署代码

    git 提供了钩子功能,当某个操作发生时,可以执行某个动作. ftp上传时没有文件比较,虽然可以winscp提供了同步功能但是不够强大,而且文件多了,会花费比较长的时间. 1.先在主机上搭建一个git ...

  5. git关联远程仓库命令<原>

    一.存在远程仓库了,本地想克隆其代码: $ git clone git@git.oschina.net:winkey4986/Weather_demo.git 二.本地有代码了,想在建个远程仓库保存代 ...

  6. 如何退出Activity?如何安全退出已调用多个Activity的Application?

    对于单一Activity的应用来说,退出很简单,直接finish()即可. 1.抛异常强制退出: 该方法通过抛异常,使程序ForceClose. 验证可以,但是,需要解决的问题是,如何使程序结束掉,而 ...

  7. php 不依赖数据实现删除图片,核心代码

    <?php $file = "ueditor\php\upload\image\*\*.png"; foreach (glob("$file") as $ ...

  8. Maven中央仓库——你可能不知道的细节

    地址 —— 目前来说,http://repo1.maven.org/maven2/是真正的Maven中央仓库的地址,该地址内置在Maven的源码中,其它地址包括著名的ibiblio.org,都是镜像. ...

  9. IoC最大的好处是什么?

    IoC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有 ...

  10. 在tomcat下context.xml中配置各种数据库连接池(JNDI)

    1.   首先,需要为数据源配置一个JNDI资源.我们的数据源JNDI资源应该定义在context元素中.在tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个 ...