一、下载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. C#中分别对委托、匿名方法、Lambda表达式、Lambda表达式树以及反射执行同一方法的过程进行比较。

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. centos7添加服务

    [Unit] Description=rockae Service After=network.target [Service] ExecStart=/bin/java -jar /usr/local ...

  3. 通过google浏览器的开发者工具修改cookie值

    打开一个页面F12,然后再刷新下.点到如下图位置刚可以添加或重设cookie的值.修改cookie的值时,需要注意要清除下cookie.不然修改的cookie不生效.

  4. cocos2dx遇到的坑1

    记录下在cocos2dx 2.x时代遇到的问题 1.节点的观念,用节点来管理 2.pushscene popscene 和replacewithscene runwithscene对应 3.lua里释 ...

  5. Disable Maven Nature和disable workspace resolution

    1.Disable Maven Nature myeclipse更新maven的时候,手抖了一下,点上了Disable Maven Nature,然后工程右键菜单中的Maven栏就不见了! 其实这是把 ...

  6. VBA 删除页

    怎么让word自动删除第3.6.9.12等3的倍数页‘ Sub kk1206190933() Dim wNum As Integer Dim wPag As Integer With Selectio ...

  7. linux性能评估与分析工具

    linux是一个开源系统,其内核负责管理系统的进程,内存,设备驱动程序,文件和网络系统, 决定着系统的性能和稳定性.由于内核源码很容易获取,任何人都可以将自己认为优秀的代码 加入到其中.linux默认 ...

  8. java资料——数据结构(转)

    数据结构 (计算机存储.组织数据方式)                                                                            数据结构是 ...

  9. http抓包工具

    fiddler 可以用该工具抓包并修改对应的参数数据

  10. JVM 详谈

    JVM 详谈 本来这次应该讲讲ORM 的几个框架,但是笔者还没有完全总结出来,所以这里先插入一次学习JVM的心得.作为一个Java程序员,如果不了解JVM的工作原理,就很难从底层去把 握Java语言和 ...