Mongodb系列- java客户端简单使用(CRUD)

 2023-09-10 阅读 24 评论 0

摘要:Mongodb提供了很多的客户端: shell,python, java, node.js...等等. 以 java 为例实现简单的增删改查 pom文件: javaapi, <dependencies><dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver</artifactId><version

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

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

pom文件:

javaapi, 

<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();}
}

简单分析:

mongodb java。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操作.

使用实例

docker安装mongodb,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 集合的所有文档 :

es java客户端。{ "_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. 连接数据库

mongodb怎么使用。2. 执行操作

3. 关闭连接

 

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

JAVA客户端、转载注明出处: http://www.cnblogs.com/jycboy/p/8758754.html

 

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/36848.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息