博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mongodb系列- java客户端简单使用(CRUD)
阅读量:7251 次
发布时间:2019-06-29

本文共 8581 字,大约阅读时间需要 28 分钟。

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

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

pom文件:

 

org.mongodb
mongodb-driver
3.4.3
org.mongodb
mongodb-driver-async
3.4.3
org.slf4j
slf4j-log4j12
1.7.25

 

在这里我们先封装一个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
getCollection(String collectionName){ //MongoCollection实例是不可变的 if(!collectionExists(collectionName)){ return null; } MongoCollection
collection = database.getCollection(collectionName); return collection; } public static boolean collectionExists(final String collectionName) { boolean collectionExists = database.listCollectionNames() .into(new ArrayList
()).contains(collectionName); return collectionExists; /*MongoIterable
mongoIterable = database.listCollectionNames(); for (Iterator
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
collection){ MongoCursor
cursor = collection.find().iterator(); try { while (cursor.hasNext()) { System.out.println(cursor.next().toJson()); } } finally { cursor.close(); } } public static String getDocumentFirst(MongoCollection
collection){ Document myDoc = collection.find().first(); return myDoc.toJson(); } public static void createDocument(MongoCollection
collection,Map
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
collection,Document doc){ collection.insertOne(doc); } /** * 插入多个Document * @param collection * @param documents */ public static void insertManyDocument(MongoCollection
collection,List
documents){ collection.insertMany(documents); } /** * 显示创建集合 */ public static void explicitlyCreateCollection(String collectionName){ database.createCollection(collectionName, new CreateCollectionOptions().capped(false)); } // 删除集合的所有文档 public static long deleteAllDocument(MongoCollection
collection) { DeleteResult deleteResult = collection.deleteMany(new Document()); long count = deleteResult.getDeletedCount(); return count; } // 删除集合 public static void deleteCollection(MongoCollection
collection) { collection.drop(); } /** *

* 关闭客户端 *

* * @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
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
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
documents = new ArrayList
(); 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参照我前边的博客: 

 

比如我的获取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 的字段 等等..

转载注明出处: 

 

你可能感兴趣的文章
性能测试工具之Apache ab
查看>>
memcached 基本操作
查看>>
Android NDK之JNI陷阱
查看>>
一周总结
查看>>
IIS Express
查看>>
算法题-经典数学问题
查看>>
扩展欧几里得及中国剩余定理
查看>>
数据库三范式详解
查看>>
7/13
查看>>
特殊矩阵的查找
查看>>
icinga 被动模式 nsca 安装
查看>>
python-week2-pycharm
查看>>
项目分解
查看>>
使用IntelliJ IDEA 配置Maven(入门)
查看>>
Python3 JSON 数据解析
查看>>
web框架原理
查看>>
iOS--进阶知识--Runtime
查看>>
【原】IE/FF 强制浏览器不读取缓存(强制刷新)
查看>>
【转】解决javascript中replace只能替换第一个
查看>>
统计文件或文件夹大小
查看>>