zoukankan      html  css  js  c++  java
  • java 使用最新api操作mongodb

    //

    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+"");

    }




    }

  • 相关阅读:
    实现类似“添加扩展程序…”的设计时支持
    为什么word2007写的文章不能显示在首页
    (翻译)LearnVSXNow!#4 创建一个带有工具窗的Package
    (翻译)LearnVSXNow!#1 如何开始VSX开发?
    测试Windows live writer 发日志
    (翻译)LearnVSXNow!#3 创建一个带有简单命令的Package
    styleSheetTheme和them
    (翻译)LearnVSXNow!#2 创建一个空的VS Package
    VS 2008 Package 备忘
    通用树形表查询SQL
  • 原文地址:https://www.cnblogs.com/luo-mao/p/5888356.html
Copyright © 2011-2022 走看看