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.1static MongoClient mongoClient = new MongoClient(ip, 27017);//MongoDatabase实例是不可变的static MongoDatabase database;//firstDBpublic 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 的字段 等等..

转载注明出处: http://www.cnblogs.com/jycboy/p/8758754.html

转载于:https://www.cnblogs.com/jycboy/p/8758754.html

Mongodb系列- java客户端简单使用(CRUD)相关推荐

  1. mongodb java crud_MongoDB用Java,简单的CRUD操作,两种方法,附源码下载。

    两种不同的连接数据库的方式来操作. MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); 方法1: D ...

  2. es文本分析java代码_Elasticsearch系列---Java客户端代码Demo

    前言 前面历经33篇内容的讲解,与ES的请求操作都是在Kibana平台上用Restful请求完成的,一直没发布Java或python的客户端代码,Restful才是运用.理解ES核心功能最直接的表达方 ...

  3. 【MongoDB】5.MongoDB与java的简单结合

    1.首先 你的清楚你的MongoDB的版本是多少  就下载对应的架包 下载地址如下: http://mongodb.github.io/mongo-java-driver/ 2.新建一个项目  把架包 ...

  4. mongodb java客户端_mongodb的java客户端

    6. mongoDB的java客户端 1. springboot操作mongodb 1. maven配置 org.springframework.boot spring-boot-starter-da ...

  5. mongodb与java结合_MongoDB初探系列之四:MongoDB与Java共舞

    MongoDB初探系列之四:MongoDB与Java共舞 来源:互联网 作者:佚名 时间:2015-08-05 08:20 对各位注意到这个帖子的朋友说一声对不起,我不是故意的测试服务器一直没关,一忙 ...

  6. HBase学习之路(二):Java客户端的CRUD操作详讲

    内容简介 一.概述 二.操作前的准备 三.put操作 1.单行put方法 2.使用Put列表 四.get操作 1.单行get方法 2.使用Get列表 五.delete操作 1.单行delete方法 2 ...

  7. memcached java 客户端优化,分布式缓存技术memcached学习系列(五)—— memcached java客户端的使用...

    Memcached的客户端简介 我们已经知道,memcached是一套分布式的缓存系统,memcached的服务端只是缓存数据的地方,并不能实现分布式,而memcached的客户端才是实现分布式的地方 ...

  8. java增删改查实例源码_Spring Data JPA 实现简单的CRUD增删改查源码案例

    Spring专题 Spring Data JPA 实现简单的CRUD增删改查源码案例 Spring Data JPA旨在简化JPA基础知识库构建和减少需要与数据库进行通信的代码量.第一部分是如何配置H ...

  9. 使用Express和MongoDB构建简单的CRUD应用程序

    by Zell Liew 由Zell Liew 使用Express和MongoDB构建简单的CRUD应用程序 (Building a Simple CRUD Application with Expr ...

最新文章

  1. 你最常用的构建和发布管理工具是什么
  2. 几十万的词如何用每页500词分页展示_如何写出一份优秀的应届生简历?
  3. 没有绿幕,AI也能完美视频抠图,发丝毕现,毫无违和感 | CVPR
  4. apache 查看本地页面_GeoSever的页面实现
  5. Xcode 8 插件安装
  6. 题解P3942_将军令
  7. keil4怎么移植其他人的程序_简单和你聊聊造血干细胞移植!
  8. 用位运算实现求绝对值-有效避开if-else判断
  9. 《代码整洁之道》—第1章1.1节要有代码
  10. Note: File Recipe Compression in Data Deduplication Systems
  11. ImageButton 按钮查看商品详细信息
  12. 使用Cron和PHP检测网页是否被篡改
  13. 一部农村小孩学计算机的电影,10部关于教育的电影,每一部都经典!
  14. Windows的hosts文件在哪里?
  15. 基于C# winform实现随机点名小工具(支持csv导入)
  16. 普林斯顿邓嘉学生亲述:一定要博士学位?不,我本科生也能在大厂当应用科学家...
  17. 【智慧家科教2023新春首训】东方昱老师畅谈新发展之路:前途是光明的 未来是可期的
  18. GBU406-ASEMI整流扁桥GBU406
  19. 基于PaddleSpeech搭建个人语音听写服务
  20. 戒烟产品如何引流?戒烟产品如何寻找客户?戒烟类产品推广方案

热门文章

  1. 收藏 | 超大模型调参变简单
  2. php com(),php|luosimao.com文档中心
  3. 近6年语音合成领域都有哪些论文?
  4. opencv-4.5.3 + opencv_contrib-4.5.3 + vtk-9.0.3编译(全流程)
  5. Active Learning: 一个降低深度学习时间,空间,经济成本的解决方案
  6. 无人车制胜关键:Apollo决策系统全面剖析
  7. python3.5安装scrapy_win7+Python3.5下scrapy的安装方法
  8. python两数相加有进退位_Leetcode_两数相加_python
  9. 主板没有rgb接口怎么接灯_老电脑也玩一下RGB,一次酷冷至尊MB400L智瞳机箱安装体验...
  10. 华为鸿蒙3799跟4799有啥区别,华为鸿蒙智慧屏出世!3799元高价,是增智慧还是智商税?...