MongoDB API实现增删改查
一,代码实现
1 import com.mongodb.DBCollection; 2 import com.mongodb.MongoClient; 3 import java.net.UnknownHostException; 4 5 6 public class MongDBUtile { 7 /** 8 * MongoClient是线程安全的 9 * Mongo是非线程安全的 10 * 目前mongodb API中已经建议用MongoClient替代Mongo 11 */ 12 private MongoClient mongoClient = null; 13 14 15 /** 16 * 指定数据库的指定集合 17 * @param dbName 18 * @param collectionName 19 * @return 20 */ 21 public DBCollection getDBCollection(String dbName, String collectionName) { 22 return mongoClient.getDB(dbName).getCollection(collectionName); 23 } 24 25 /** 26 * 单例模式获取MongoClient 27 */ 28 private static MongDBUtile getInstance = null; 29 30 public static MongDBUtile getInstance(String host, int port){ 31 getInstance = new MongDBUtile(host,port); 32 return getInstance; 33 } 34 35 private MongDBUtile(String host, int port){ 36 if(mongoClient == null){ 37 synchronized (MongDBUtile.class) { 38 if (mongoClient == null) { 39 initConn(host, port); 40 } 41 } 42 } 43 } 44 45 /** 46 * 初始化MongoClient 47 * @param host 48 * @param port 49 */ 50 private void initConn(String host, int port) { 51 try { 52 mongoClient = new MongoClient(host,port); 53 } catch (UnknownHostException e) { 54 e.printStackTrace(); 55 } 56 } 57 58 }
1.1 插入
1 /** 2 * 新增 一条记录 3 * @param dbCollection 4 */ 5 public static void addOne(DBCollection dbCollection){ 6 DBObject documents = new BasicDBObject("name","张三").append("age", 45).append("sex", "男").append("address", 7 new BasicDBObject("postCode", 100000).append("street", "深南大道888号").append("city", "深圳")); 8 dbCollection.insert(documents); 9 } 10 11 /** 12 * 批量新增记录:可以使用各种数据类型 13 * @param dbCollection 14 */ 15 public static void addList(DBCollection dbCollection){ 16 List<DBObject> listdbo= new ArrayList<>(); 17 DBObject dbObject = new BasicDBObject(); 18 dbObject.put("name", "老王"); 19 // 可以直接保存List类型 20 List<String> list = new ArrayList<>(); 21 list.add("老王1"); 22 list.add("老王2"); 23 dbObject.put("remark", list); 24 listdbo.add(dbObject); 25 26 dbObject = new BasicDBObject(); 27 // 可以直接保存map 28 Map<String,List<String>> map = new HashMap<>(); 29 List<String> hobbys = new ArrayList<>(); 30 hobbys.add("吃饭"); 31 hobbys.add("睡觉"); 32 hobbys.add("吃鸡"); 33 map.put("爱好", hobbys); 34 dbObject.put("hobby", map); 35 listdbo.add(dbObject); 36 37 dbObject = new BasicDBObject(); 38 dbObject.put("name", "老张"); 39 dbObject.put("age", 52); 40 dbObject.put("job", "快递员"); 41 dbObject.put("remark", new BasicDBObject("address", "广东省深圳市").append("street", "深南大道888号")); 42 listdbo.add(dbObject); 43 44 dbCollection.insert(listdbo); 45 } 46 47 /** 48 * json转对象后执行新增 49 * @param dbCollection 50 */ 51 public static void addByJson(DBCollection dbCollection){ 52 String json = "{ \"name\" : \"王五\" , \"age\" : 66 , \"job\" : \"快递员\" , \"remark\" : { \"address\" : \"广东省深圳市\" , \"street\" : \"深南大道888号\"}}"; 53 DBObject dbObject = (DBObject)JSON.parse(json); 54 dbCollection.insert(dbObject); 55 }
方法调用以及运行结果
1 //连接mongoDB,并打开数据库 2 DBCollection dbCollection = MongDBUtile.getInstance(HOST,PORT).getDBCollection(DB_NAME, DBCOLLECTION_NAME); 3 4 addOne(dbCollection); 5 addList(dbCollection); 6 addByJson(dbCollection);
1.2 查询
1 /** 2 * 条件查询:name 为 张三 3 * @param dbCollection 4 */ 5 public static void queryOne(DBCollection dbCollection){ 6 DBObject result = dbCollection.findOne(new BasicDBObject("name","张三")); 7 System.out.println(result); 8 } 9 10 /** 11 * 分页查询:跳过前2条后的3条数据 12 * @param dbCollection 13 */ 14 public static void queryPage(DBCollection dbCollection){ 15 DBCursor cursor = dbCollection.find().skip(2).limit(3); 16 //遍历输出结果 17 while (cursor.hasNext()) { 18 System.out.println(cursor.next()); 19 } 20 } 21 /** 22 * 范围查询:第3条 到 第5条 之间的记录 23 * @param dbCollection 24 * 大于 - $gt 25 * 小于 - $lt 26 * 大于等于 - $gte 27 * 小于等于 - $lte 28 */ 29 public static void queryRange(DBCollection dbCollection) { 30 DBObject range = new BasicDBObject(); 31 range.put("$gte", 28); 32 range.put("$lte", 32); 33 34 DBObject dbObject = new BasicDBObject(); 35 dbObject.put("age", range); 36 DBCursor cursor = dbCollection.find(dbObject); 37 while (cursor.hasNext()) { 38 System.out.println(cursor.next()); 39 } 40 } 41 42 /**' 43 *查询出全部的 记录 44 * @param dbCollection 45 */ 46 public static void queryList(DBCollection dbCollection) { 47 DBCursor cursor = dbCollection.find(); 48 while(cursor.hasNext()){ 49 System.out.println(cursor.next()); 50 } 51 }
方法调用以及运行结果
1 //连接mongoDB,并打开数据库 2 DBCollection dbCollection = MongDBUtile.getInstance(HOST,PORT).getDBCollection(DB_NAME, DBCOLLECTION_NAME); 3 System.out.println("条件查询:name 为 张三"); 4 queryOne(dbCollection); 5 System.out.println("跳过前2条后的3条数据"); 6 queryPage(dbCollection); 7 System.out.println("age在50到52之间的记录"); 8 queryRange(dbCollection); 9 System.out.println("查询出全部的记录"); 10 queryList(dbCollection); 11 12 13 *******************************运行结果******************************* 14 15 条件查询:name 为 张三 16 { "_id" : { "$oid" : "5a50b3d6e6fbe9e658745f04"} , "name" : "张三" , "age" : 45 , "sex" : "男" , "address" : { "postCode" : 100000 , "street" : "深南大道888号" , "city" : "深圳"}} 17 跳过前2条后的3条数据 18 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d5"} , "hobby" : { "爱好" : [ "吃饭" , "睡觉" , "吃鸡"]}} 19 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d6"} , "name" : "老张" , "age" : 52 , "job" : "快递员" , "remark" : { "address" : "广东省深圳市" , "street" : "深南大道888号"}} 20 age在50到52之间的记录 21 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d6"} , "name" : "老张" , "age" : 52 , "job" : "快递员" , "remark" : { "address" : "广东省深圳市" , "street" : "深南大道888号"}} 22 查询出全部的记录 23 { "_id" : { "$oid" : "5a50b3d6e6fbe9e658745f04"} , "name" : "张三" , "age" : 45 , "sex" : "男" , "address" : { "postCode" : 100000 , "street" : "深南大道888号" , "city" : "深圳"}} 24 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d4"} , "name" : "老王" , "remark" : [ "老王1" , "老王2"]} 25 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d5"} , "hobby" : { "爱好" : [ "吃饭" , "睡觉" , "吃鸡"]}} 26 { "_id" : { "$oid" : "5a50b41ae6fb51a28bf2b2d6"} , "name" : "老张" , "age" : 52 , "job" : "快递员" , "remark" : { "address" : "广东省深圳市" , "street" : "深南大道888号"}}
1.3 更新
/*** 修改指定记录* @param dbCollection*/public static void updateOne(DBCollection dbCollection) {// 先根据id查询将这条记录查询出来DBObject qryResult = dbCollection.findOne(new ObjectId("5a50b768e6fbda046406b255"));// 修改指定的值qryResult.put("age", 55);DBObject oldDBObject = new BasicDBObject();oldDBObject.put("_id", new ObjectId("5a50b768e6fbda046406b255"));dbCollection.update(oldDBObject, qryResult);}/*** 修改多条记录* @param dbCollection*/public static void updateMulti(DBCollection dbCollection) {DBObject newDBObject = new BasicDBObject();newDBObject.put("name", "张三");newDBObject.put("address", "广东深圳");newDBObject.put("remark", "张三是一个man");DBObject oldDBObject = new BasicDBObject();oldDBObject.put("name", "张三");// 需要加上这个DBObject upsertValue = new BasicDBObject("$set", newDBObject);// 后面的两个参数:1.若所更新的数据没有,则插入 ; 2、同时更新多个符合条件的文档(collection)dbCollection.update(oldDBObject, upsertValue, true, true);}
方法调用以及运行结果
1.4 删除
1 /** 2 *删除第一个 3 * @param dbCollection 4 */ 5 public static void deleteFirst(DBCollection dbCollection){ 6 DBObject dbObject = dbCollection.findOne(); 7 dbCollection.remove(dbObject); 8 } 9 10 /** 11 * 删除指定的一条记录 12 * @param dbCollection 13 */ 14 public static void deleteOne(DBCollection dbCollection){ 15 DBObject dbObject = new BasicDBObject(); 16 dbObject.put("_id", new ObjectId("5a50b41ae6fb51a28bf2b2d4")); 17 dbCollection.remove(dbObject); 18 } 19 20 /** 21 * 删除多条记录 22 * 例如:select * from tb where name in('12','34') 23 * @param dbCollection25 */ 26 public static void deleteByIn(DBCollection dbCollection) { 27 List<String> list = new ArrayList<String>(); 28 list.add("老张"); 29 list.add("老王"); 30 list.add("张三"); 31 DBObject dbObject = new BasicDBObject("$in", list); 32 33 DBObject delObject = new BasicDBObject(); 34 delObject.put("name", dbObject); 35 dbCollection.remove(delObject); 36 } 37 38 /** 39 * 删除全部的记录 40 * @param dbCollection 41 */ 42 public static void deleteAll(DBCollection dbCollection){ 43 DBCursor cursor = dbCollection.find(); 44 while(cursor.hasNext()){ 45 dbCollection.remove(cursor.next()); 46 } 47 }
转载于:https://www.cnblogs.com/yy136/p/8215167.html
MongoDB API实现增删改查相关推荐
- Mongodb的的增删改查
Mongodb的的增删改查 1. mongodb插入数据 命令:db.集合名称.insert(document) [document要用大括号包起来] db.stu.insert({name:'g ...
- 利用koa实现mongodb数据库的增删改查
概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...
- Mongodb命令操作增删改查
Mongodb命令操作增删改查 需求描述 新增5 人 查询 修改 删除 数据结构 {"_id" : ObjectId("59f938235d93fc4af8a37114& ...
- express+mongodb+vue实现增删改查-全栈之路
vue element mongodb express 效果图 前言 最近一直想学下node,毕竟会node的前端更有市场.但是光看不练,感觉还是少了点什么,就去github上看别人写的项目,收获颇丰 ...
- Java操作Mongodb数据(增删改查聚合查询)
文章目录 一.Java操作MongoDB 二.使用步骤 1.基础配置 2.实体类 3.MongoDB表数据 3.增删改查聚合查询 总结 一.Java操作MongoDB 上一篇文章介绍了,如何在本地使用 ...
- Node.js+Express+MongoDB 实现学生增删改查
前言 选用Node.js,Express,MongoDB来实现一个学生信息的增删改查. Express框架搭建服务器 art-template模板实现页面 MongoDB数据库 Mongoose操作数 ...
- nodejs对mongodb数据库的增删改查操作(转载)
首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...
- mongodb数据库的增删改查(有图有demo)
名词注释 下面的截图中,有一些名词需要解释一下,方便理解和应用: cuckoo叫库名,也就是数据库的名字 users叫集合名,也就是colloction的名字 右侧带_id的一排排的, 那叫文档 而_ ...
- java创建mongdb数据库_【转发】Java使用MongoDB数据库进行增删改查
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_26584263/article/ ...
最新文章
- python窗口动态实时显示时间_苏州2.8寸串口屏厂家:切管机触摸屏实时动态显示切割过程...
- WinCE/Mobile上下滑动浏览DataGrid数据 【转】
- 马斯克再发声,称人工智能是人类文明面临的最大风险
- Linux网络模式及远程连接出错排障
- udp socket 接收数据
- 从googleDriver下载大数据集
- websoc是什么可以卸载吗_Win7系统中unity web player是什么程序?能否卸载
- Ubuntu虚拟机下载app网速太慢
- 交换element-ui的MessageBox弹框的确定和取消位置
- B2C商城项目源码,基于Java开发的高可用分布式B2C商城系统,Java+Spring MVC+Dubbo+Zookeeper+MySQL+Redis+FastDFS+Nginx+Solr
- C# 群发邮件 (密送、抄送)
- 《Real time Detection of Lane Markers in Urban Streets》阅读笔记
- 港科百创|首创元宇宙会场-香港科大-杰瑞集团2022【人工智能】百万奖金国际创业大赛决赛...
- 从头开始写STM32F103C8T6驱动库(二)——编写系统初始化程序,配置时钟树
- CEO采访:从战略层面建立数据驱动型的客户体验策略
- 众链网络-慧景区项目建设方案1(票务系统)
- JavaScript基础——自定义对象
- 缓冲区溢出攻击(Buffer Overflows实验笔记)
- oracle 配置ip地址监听,Windows环境下修改Oracle实例监听IP地址
- IM系统四大基本特性
热门文章
- [原创]基于frida的脱壳工具
- Android源码分析--MediaServer源码分析(一)
- 深入理解Android的startservice和bindservice
- Android中取消系统标题栏的几种方式
- TextSwitcher实现文本自动垂直滚动
- sql安装目录下log文件夹_Linux安装Hive数据仓库工具
- 试用去水印_教你一键视频去水印,支持抖音、快手、小红书、哔哩哔哩等几十个平台...
- python3多线程异步爬虫_python3爬虫中多线程进行解锁操作实例
- c语言程序设计精髓第二周,2实型数据C语言程序设计精髓.pdf
- 求细胞数量pascal题解