//

package com.auto.test.dbmodel;

import java.util.ArrayList;

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

/**
* 类说明
*
* @author luozt
* @date 2016年9月19日 新建
*/
public class DBConnUtil {

public String ip;
public int port;
public String dbname;
MongoClient mongoClient;
MongoDatabase db;
FindIterable<Document> cursor=null;
long update_count=0;
long delete_count=0;

public DBConnUtil(String ip,int port,String dbname){

this.ip=ip;
this.port=port;
this.dbname=dbname;

}

public MongoDatabase conn()
{
mongoClient = new MongoClient(ip , port );
db = mongoClient.getDatabase(dbname);

return db;

}

/**query data from database
*
* @param collection_name
* @param document 为查询条件
* @param document_projection为只返回需要的字段
* @return
* crud method please see http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
*/

@SuppressWarnings("unchecked")
public FindIterable<Document> queryData(String collection_name,Bson document,int flag){
//collection_name为要查询的collection名字
MongoCollection<Document> coll = db.getCollection(collection_name);

if(flag==0){
//0 代表查询所有
cursor=coll.find(document);
}
else if(flag==1){
//1 代表只查询一条数据
cursor=(FindIterable<Document>) coll.find(document).first();

}

else if(flag==2){
//2 代表没有查询条件
cursor=coll.find();

}
return cursor;
}

@SuppressWarnings("unchecked")
public FindIterable<Document> queryData(String collection_name,Bson document,Bson document_projection,int flag){

MongoCollection<Document> coll = db.getCollection(collection_name);
if(flag==0){
//0 代表查询所有
cursor=coll.find(document).projection(document_projection);
}

else if(flag==1){
//1 代表只查询一条数据
cursor=(FindIterable<Document>) coll.find(document).projection(document_projection).first();
}

else if(flag==2){
//2 代表没有查询条件
cursor=coll.find().projection(document_projection);
}
return cursor;
}

/**insert data to database;
*
* crud method please see http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
*/
public void insertData(String collection_name,ArrayList<Document> documents){

MongoCollection<Document> coll = db.getCollection(collection_name);

coll.insertMany(documents);

}

/**
*
* update data to database
*
* filter 通过此filter过滤需要更新的数据
* update 需要更新的内容
*
*
*
* crud method please see http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
*/

public long updateData(String collection_name,Bson filter,Bson update,int flag){

MongoCollection<Document> coll = db.getCollection(collection_name);
if(flag==0){
update_count=coll.updateMany(filter, update).getModifiedCount();
// return update_count;
}

else if(flag==1){

update_count=coll.updateOne(filter, update).getModifiedCount();
// return update_count;
}
return update_count;
}

/**
*
* remove data from database
*
* filter 通过此filter去过滤需要删除的数据
* crud method please see http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
*/

public long deleteData(String collection_name,Bson filter,int flag){

MongoCollection<Document> coll = db.getCollection(collection_name);
if(flag==0){

delete_count=coll.deleteMany(filter).getDeletedCount();
// return delete_count;
}
else if(flag==1){

delete_count=coll.deleteOne(filter).getDeletedCount();
// return delete_count;

}

return delete_count;
}

}

//dbunit

package com.auto.test.testcase;

import java.util.ArrayList;

import org.bson.Document;
import com.auto.test.basedata.DBConfig;
import com.auto.test.dbmodel.DBConnUtil;
import com.mongodb.Block;
import com.mongodb.client.FindIterable;

/**
* 类说明
*
* @author luozt
* @date 2016年9月19日 新建
*/
public class dbUnit_test implements DBConfig{

String collection_name="test_api";

public static void main(String[] args) {
// TODO Auto-generated method stub
dbUnit_test test=new dbUnit_test();
}

public dbUnit_test(){

DBConnUtil dbhelp=new DBConnUtil(mongo_ip,mongo_port,mongo_dbname);
dbhelp.conn();

/**
* insert
* if database or collection not exist ,it will be created by Automatic
*/

ArrayList<Document> documents=new ArrayList<Document>();

Document document=new Document("name","mongodb2")
.append("type", "database2")
.append("count", "112")
.append("info", new Document("x",2032).append("y", 1022));

documents.add(document);

dbhelp.insertData(collection_name, documents);

/**
* query
*
*/
Document query_document=new Document("info.x",new Document("$gt",300));
Document fiter_document=new Document("name",1).append("count", 1);

FindIterable<Document> iterable=dbhelp.queryData(collection_name, query_document, fiter_document, 0);
iterable.forEach(new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document);
}
});

/**
* update
*
*/

Document update_document=new Document("name","mongodb2");
Document update_option=new Document("$set",new Document("info.y",2000));
long update_count=dbhelp.updateData(collection_name, update_document, update_option, 0);
System.out.println(update_count);

/**
*
* delete
*
*
*/
Document delete_document=new Document("type","database3");

long delete_count=dbhelp.deleteData(collection_name, delete_document, 0);
System.out.println("delete count is "+delete_count+"");

}

}

java 使用最新api操作mongodb的更多相关文章

  1. Java API 操作 Mongodb

    本次测试环境使用一台ip为 192.168.2.23 的虚拟机 一.依赖 <dependency> <groupId>org.mongodb</groupId> & ...

  2. Java代码通过API操作HBase的最佳实践

    HBase提供了丰富的API.这使得用Java连接HBase非常方便. 有时候大家会使用HTable table=new HTable(config,tablename);的方式来实例化一个HTabl ...

  3. MongoDB学习(五)使用Java驱动程序3.3操作MongoDB快速入门

    [引言] 毕竟现在MongoDB还是出于成长阶段,所以现在网上相关的资料很少,而且大部分还都是针对于MongoDB的老版本的.再加上MongoDB的频繁升级.重大更新等等,导致菜鸟学习的难度增大. 好 ...

  4. Java 封装 HDFS API 操作

    代码下载地址:点击下载 一:环境介绍 hadoop:2.6 Ubuntu:15.10 eclipse:3.8.1 二:操作包含 推断某个目录是否存在              isExist(fold ...

  5. java操作mongodb & springboot整合mongodb

    简单的研究原生API操作MongoDB以及封装的工具类操作,最后也会研究整合spring之后作为dao层的完整的操作. 1.原生的API操作 pom.xml <!-- https://mvnre ...

  6. MongoDB Java API操作很全的整理

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,一般生产上建议以共享分片的形式来部署. 但是MongoDB官方也提供了其它语言的客户端操作API.如下图所示: 提供了C.C++ ...

  7. 学习MongoDB--(11):应用举例(利用java操作MongoDB)

    原文地址:http://blog.csdn.net/drifterj/article/details/7948090 目录地址:http://blog.csdn.net/DrifterJ/articl ...

  8. Mongodb快速入门之使用Java操作Mongodb

    [IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...

  9. springboot 学习之路 14(整合mongodb的Api操作)

    springboot整合mongodb: mongodb的安装和权限配置  请点击连接参考 mongodb集成 : 第一步:引如pom文件 第二步:配置文件配置mongodb路径: 第三步:关于mon ...

随机推荐

  1. iOS 52个技巧学习心得笔记 第一章 熟悉OC

    1 .简单了解OC2 .在类的头文件中尽量少引入其他头文件3 .多用字面量语法 少用与之等价的方法 4 .多用类型常量 少用 #define 预处理指令5 .用枚举表示状态,选项,状态码 .简单了解O ...

  2. asp.net 移除Server, X-Powered-By, 和X-AspNet-Version头

    我们在开发Asp.net中,最后部署在IIS上. 然后发送HTTP请求,返回的HTTP头中包含Server, X-Powered-By, 和 X-AspNet-Version信息. 这些信息有时给攻击 ...

  3. 静态库引入引起的错误解决方案,ld: warning: ignoring file ”…/XXX.a”, file was built for archive which is not the architecture being linked (armv7): “…/XXX.a” Undefined symbols for architecture armv7: "_OBJC_CLASS_$

    想目中不免会引入一些静态库,可是有时加入'.a'文件后编译便会报以下错误 ld: warning: ignoring file ”…/XXX.a”, file was built for archiv ...

  4. kafka connect简介以及部署

    https://blog.csdn.net/u011687037/article/details/57411790 1.什么是kafka connect? 根据官方介绍,Kafka Connect是一 ...

  5. Linux下运行java项目

    最近初步接触了linux,感觉很有新鲜感.之前在windows下干过的事情也便想到在linux环境下实现一下.正好手头在编java,就想既然java可以在windows的DOS操作下运行,是不是也可以 ...

  6. level-4

    [1.网页乱码的问题是如何产生的.怎么样解决?] 造成html网页乱码原因主要是html源代码内中文字内容与html编码不同造成.主要情况有以下三种: 1.比如网页源代码是gbk的编码,而内容中的中文 ...

  7. QQ空间如何设置被删除的好友不能访问空间

    原来一直都很在乎.自己看着办. 经过简单的测试这种方法还是可以的啊,有问题到时候在说吧.理论上无论是否删除好友都可以限制对方访问空间. 旁边还有可以设置不能访问的名单(看仔细点-设置限制名单).

  8. ssh框架整合意义

    一次次学习,一次次不一样的进一步理解. 一.Struts2.String.Hibernate框架的整合的意义: 1.需要将所有的对象进行统一管理(action动作类:sessionFactory) 2 ...

  9. Fatal error: cannot create 'R_TempDir'

    [user@mgmt dir]$ R Fatal error: cannot create 'R_TempDir' [user@mgmt dir]$ ll -ad /tmp drwxrwxrwt. 2 ...

  10. 【bzoj5085】最大(二分+乱搞)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=5085 这道题我们可以先二分答案,然后转化为判定是否有四角权值>=mid的矩形. ...