Mongodb系列- java语言客户端简单使用(CRUD)
小标 2018-07-19 来源 : 阅读 583 评论 0

摘要:本文主要向大家介绍了Mongodb系列- java语言客户端简单使用(CRUD),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了Mongodb系列- java语言客户端简单使用(CRUD),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

Mongodb提供了很多的客户端: shell,python, java, node.js...等等.

以 java 为例实现简单的增删改查

pom文件:

 

 

<dependencies>

    <dependency>

        <groupId>org.mongodb</groupId>

        <artifactId>mongodb-driver</artifactId>

        <version>3.4.3</version>

    </dependency>

     <dependency>

        <groupId>org.mongodb</groupId>

        <artifactId>mongodb-driver-async</artifactId>

        <version>3.4.3</version>

    </dependency>

    <dependency>

        <groupId>org.slf4j</groupId>

        <artifactId>slf4j-log4j12</artifactId>

        <version>1.7.25</version>

    </dependency>

  </dependencies>

 

 

在这里我们先封装一个mongodb管理类:

 

import java.util.ArrayList;import java.util.List;import java.util.Map;

import org.bson.Document;import org.slf4j.Logger;import org.slf4j.LoggerFactory;

import com.mongodb.MongoClient;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.model.CreateCollectionOptions;import com.mongodb.client.result.DeleteResult;/**

 * MongoDB管理类

 * @author jiangyuechao

 *

 */public class MongoDBHelper {

    static Logger logger = LoggerFactory.getLogger(MongoDBHelper.class);

 

    static String ip = "10.80.18.1";

    //10.80.21.41 10.80.18.1

    static MongoClient mongoClient = new MongoClient(ip, 27017);

    //MongoDatabase实例是不可变的

    static MongoDatabase database;

    //firstDB

    public static void connect(String databaseName){

        database = mongoClient.getDatabase(databaseName);

    }

    

    public static MongoCollection<Document> getCollection(String collectionName){

        //MongoCollection实例是不可变的

        if(!collectionExists(collectionName)){

            return null;

        }

        MongoCollection<Document> collection = database.getCollection(collectionName);

        return collection;

    }

    

    public static boolean collectionExists(final String collectionName) {

         boolean collectionExists = database.listCollectionNames()

                .into(new ArrayList<String>()).contains(collectionName);

        return collectionExists;

        /*MongoIterable<String> mongoIterable = database.listCollectionNames();

        for (Iterator<String> iterator = mongoIterable.iterator(); iterator.hasNext();) {

            String name = iterator.next();

            logger.info("name:{}", name);

            if(name.equals(collectionName)){

                return true;

            }

        }

        return false;*/

    }

    

    public static void getAllDocuments(MongoCollection<Document> collection){

        MongoCursor<Document> cursor = collection.find().iterator();

        try {

            while (cursor.hasNext()) {

                System.out.println(cursor.next().toJson());

            }

        } finally {

            cursor.close();

        }

    }

    

    public static String getDocumentFirst(MongoCollection<Document> collection){

        Document myDoc = collection.find().first();

        return myDoc.toJson();

    }

    

    public static void createDocument(MongoCollection<Document> collection,Map<String,Object> map){

        System.out.println("--------------------");

        map.forEach((k,v)->{ System.out.println("Key : " + k + " Value : " + v);});

    }

    /**

     * 插入一个Document

     * @param collection

     * @param doc

     */

    public static void insertDocument(MongoCollection<Document> collection,Document doc){

        collection.insertOne(doc);

    }

    /**

     * 插入多个Document

     * @param collection

     * @param documents

     */

    public static void insertManyDocument(MongoCollection<Document> collection,List<Document> documents){

        collection.insertMany(documents);

    }

    /**

     * 显示创建集合

     */

    public static void explicitlyCreateCollection(String collectionName){

        database.createCollection(collectionName,

                new CreateCollectionOptions().capped(false));

    }

 

    // 删除集合的所有文档

    public static long deleteAllDocument(MongoCollection<Document> collection) {

        DeleteResult deleteResult = collection.deleteMany(new Document());

        long count = deleteResult.getDeletedCount();

        return count;

    }

 

    // 删除集合

    public static void deleteCollection(MongoCollection<Document> collection) {

        collection.drop();

    }

 

    /**

     * <p>

     * 关闭客户端

     * </p>

     *

     * @author jiangyuechao 2018年4月9日 上午11:23:36

     */

    public static void closeDb() {

        mongoClient.close();

    }

}

 

简单分析:

1. 使用 ip, port 连接mongodb数据库: static MongoClient mongoClient = new MongoClient(ip, 27017);

2. 连接数据库: database = mongoClient.getDatabase(databaseName);

3. 连接集合: MongoCollection<Document> collection = database.getCollection(collectionName);

4. 封装了基本的创建集合, insert ,delete操作.

使用实例

QuickTour例子:

 

package com.chaochao.mongodb;import static com.mongodb.client.model.Filters.eq;import static com.mongodb.client.model.Filters.gte;import static com.mongodb.client.model.Filters.lt;

import java.util.ArrayList;import java.util.Arrays;import java.util.List;

import org.bson.Document;

import com.mongodb.client.MongoCollection;import com.mongodb.client.model.Filters;import com.mongodb.client.result.DeleteResult;import com.mongodb.client.result.UpdateResult;

public class QuickTour {

    static String databaseName = "firstDB";

    static String collectionName = "firstCollection1";

    static MongoCollection<Document> firstCollection;

    

    public static void main(String[] args) {

        QuickTour  quickTour = new QuickTour();

        quickTour.setUp();//        quickTour.updateMultipleDoc();//        quickTour.deleteMultiple();        quickTour.getAllDocuments();

    }

    

    /**

     * 连接数据库

     */

    public void setUp(){

        MongoDBHelper.connect(databaseName);

        firstCollection =  MongoDBHelper.getCollection(collectionName);

    }

    public void getAllDocuments(){

        MongoDBHelper.getAllDocuments(firstCollection);

    }

    

    public void getDocumentFirst(){

        MongoDBHelper.connect(databaseName);

        MongoCollection<Document> collection = MongoDBHelper.getCollection(collectionName);

        String json = MongoDBHelper.getDocumentFirst(collection);

        System.out.println(json);

    }

    

    /**

     * 返回符合匹配条件的第一个doc

     * @param collection

     */

    public void getDocMatcheFilter(){

        Document myDoc = firstCollection.find(eq("y", 2)).first();

        System.out.println(myDoc.toJson());

    }

    

    public void getAllDocMatcheFilter(){

        firstCollection.find(Filters.gt("i", 10)).forEach((Document document)->{System.out.println(document.toJson());});

    }

    

    public void updateOneDoc(){

        UpdateResult updateResult = firstCollection.updateOne(Filters.eq("i", 12), new Document("$set", new Document("i", 21)));

        System.out.println(updateResult.getModifiedCount());

    }

    public void updateMultipleDoc(){

        UpdateResult updateResult = firstCollection.updateMany(lt("i", 100), new Document("$inc", new Document("i", 100)));

        System.out.printf("count:%s,insertedId:%s",updateResult.getModifiedCount(),updateResult.getUpsertedId());

        System.out.println();

    }

    

    public void deleteOne(){

        DeleteResult deleteResult = firstCollection.deleteOne(eq("i", 121));

        System.out.println(deleteResult.getDeletedCount());

    }

    public void deleteMultiple(){

        DeleteResult deleteResult = firstCollection.deleteMany(gte("i", 100));

        System.out.println(deleteResult.getDeletedCount());

    }

    

    /**

     * 插入一个doc

     * @param collection

     */

    public void insertDocument(){

        Document doc = new Document("name", "MongoDB")

                    .append("type", "database")

                    .append("count", 1)

                    .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))

                    .append("info", new Document("x", 203).append("y", 102));

        MongoDBHelper.insertDocument(firstCollection, doc);

    }

    /**

     * 插入多个doc

     * @param collection

     */

    public void insertMultipleDoc(){

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

        for (int i = 0; i < 100; i++) {

            documents.add(new Document("i", i));

        }

 

        MongoDBHelper.insertManyDocument(firstCollection, documents);

    }

    

    public void countDocs(){

        System.out.println(firstCollection.getNamespace().getCollectionName()+"-count:"+firstCollection.count());

    }

    

}

 

这个例子展示了基本的增删改查操作,直接可以运行..安装mongodb参照官网,挺简单的,java 连接mongodb参照我前边的博客: Java驱动远程连接mongoDB(简明易懂版)

 

比如我的获取firstCollection1 集合的所有文档 :

{ "_id" : { "$oid" : "5a631d80070db90c43a3477d" }, "x" : 1.0 }
{ "_id" : { "$oid" : "5a631db0070db90c43a3477e" }, "y" : 2.0 }
{ "_id" : 10.0, "calc" : 2.555555000005E12 }
{ "_id" : { "$oid" : "5a66d717ba3c702c14df31b3" }, "name" : "MongoDB", "type" : "database", "count" : 1, "versions" : ["v3.2", "v3.0", "v2.6"], "info" : { "x" : 203, "y" : 102 } }
{ "_id" : { "$oid" : "5a9220cafffeed155066c035" }, "domainID" : { "$numberLong" : "2001" }, "type" : "chao" }

 

mongodb简单的CRUD还是很好理解的,这里只是一个入门,让你快速熟悉它的操作,跟传统的数据库逻辑还是一致的:

1. 连接数据库

2. 执行操作

3. 关闭连接

 

那些复杂的查询和更新操作,我们放在后边介绍,比如: 如何匹配数组中的元素? 如何匹配嵌入文档,查询值为 null 的字段 等等..

希望对JAVA有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程