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 的字段 等等..

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

Mongodb系列- java客户端简单使用(CRUD)的更多相关文章

  1. mongodb的java客户端的设计思想

    链接见http://api.mongodb.org/java/current/?_ga=1.111551751.200271495.1409034486 整体结构分为

  2. 8天掌握EF的Code First开发系列之2 简单的CRUD操作

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 创建控制台项目 根据.Net中的类来创建数据库 简单的CRUD操作 数据库模式更改介绍 本章小结 本人的实验环境 ...

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

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

  4. fastdfs5.x Java客户端简单例子

    下载源码, 使用maven编译并安装 https://github.com/happyfish100/fastdfs-client-java.git 新建maven工程,引入fastdfs-clien ...

  5. [MongoDB]MongoDB与JAVA结合使用CRUD

    汇总: 1. [MongoDB]安装MongoDB2. [MongoDB]Mongo基本使用:3. [MongoDB]MongoDB的优缺点及与关系型数据库的比较4. [MongoDB]MongoDB ...

  6. spring集成mongodb封装的简单的CRUD

    1.什么是mongodb         MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. mongoDB MongoDB是一个介 ...

  7. hadoop系列二:HDFS文件系统的命令及JAVA客户端API

    转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...

  8. MongoDB的使用学习之(五)Spring集成MongoDB以及简单的CRUD

    这篇文章不错:Spring Data - MongoDB 教程 (1.0.0.M1)http://miller-cn.iteye.com/blog/1258859 1.介绍 之前在很多地方一直见到这个 ...

  9. memcached学习——常用命令+基于java客户端的3种简单实现(二)

    常用命令: memcached设计的原则就是简单,所以支持的命令也不是特别多~ 1.查看memcached的状态,主要用于分析内存的使用状况.优化内存分配等 stats 查看memcached的运行状 ...

随机推荐

  1. 2017-2018-2 20165220『Java程序设计』课程 结对编程练习_四则运算

    需求分析 题目要求 一个命令行程序实现: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 需求理解 输入:需要计算的式子 ...

  2. DFS Tempter of the Bone

    http://acm.hdu.edu.cn/showproblem.php?pid=1010 用到了奇偶剪枝: 0 1 0 1 1 0 1 0          如图,设起点为s,终点为e,s-> ...

  3. Dataset:利用Python将已有mnist数据集通过移动像素上下左右的方法来扩大数据集为初始数据集的5倍—Jason niu

    from __future__ import print_function import cPickle import gzip import os.path import random import ...

  4. Django模板之通用模板的使用

    Django模板之通用模板的使用 转载:https://code.ziqiangxuetang.com/django/django-template.html 我们做网站有一些通用的部分,比如 导航, ...

  5. Django 学习第八天——Django模型基础第三节

    一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...

  6. Xamarin Essentials教程地理定位Geolocation

    Xamarin Essentials教程地理定位Geolocation   通过地理定位功能,应用程序可以获取用户的当前地理位置,如经纬度值.利用地理位置,可以在地图上定位,也可以转化物理位置,划分用 ...

  7. Python3基础系列-程序模板及代码本质

    概要 横看成岭侧成峰,远近高低各不同.但是,程序的设计核心思想却是很简单,简单理解就是有一个输入,对输入的处理环节,最后得出一个输出.这个过程中的设计及其实现却是各不相同.本节的主要内容如下: 程序设 ...

  8. Python3从零开始爬取今日头条的新闻【二、首页热点新闻抓取】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

  9. 编程菜鸟的日记-初学尝试编程-编写函数实现strlen功能(总结考察点)

    //考察点1:输入参数加const int Mystrlen(const char *str) {//考察点2:断言字符串非0 assert(str!=NULL); int len=0;//考察点3: ...

  10. 移动游戏ui设计(一)

    游戏世界 游戏界面就是根据游戏特性,把必要的信息展现在游戏主界面,操控界面和弹出界面上,通过合理的设计引导用户进行人机交互操作: 1, 游戏界面设计原则:交互设计尽量不要繁琐,用最简单的方式引导用户即 ...