mongodb- Java API 增删改操作

MongoDB基本操作与应用案例 MongoDB以其高性能、可扩展性和灵活的数据模型成为了许多项目的首选数据库。通过掌握MongoDB的基本操作和API使用方法,我们可以更好地利用MongoDB来存储和处理数据,满足各种业务需求。同时,我们还需要注意索引优化和查询优化等技巧,以提高MongoDB的性能和稳定性。 阅读详情
package com.x.mongodb;

import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.bson.types.ObjectId;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;


public final class MongoDBUtil {

	private static final String HOST = "127.0.0.1";

	private static final String dbName = "test";

	private static Mongo mongo;

	private static DB db;

	static {
		try {
			mongo = new Mongo(HOST);
			db = mongo.getDB(dbName);
			// db.authenticate(username, passwd)
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (MongoException e) {
			e.printStackTrace();
		}
	}

	private MongoDBUtil() {
	}

	/**
	 * 添加操作
	 * <br>------------------------------<br>
	 * @param map
	 * @param collectionName
	 */
	public static void add(Map<String, Object> map, String collectionName) {
		DBObject dbObject = new BasicDBObject(map);
		getCollection(collectionName).insert(dbObject);
	}
	
	/**
	 * 添加操作
	 * <br>------------------------------<br>
	 * @param list
	 * @param collectionName
	 */
	public static void add(List<Map<String, Object>> list, String collectionName) {
		for (Map<String, Object> map : list) {
			add(map, collectionName);
		}
	}
	
	/**
	 * 删除操作
	 * <br>------------------------------<br>
	 * @param map
	 * @param collectionName
	 */
	public static void delete(Map<String, Object> map, String collectionName) {
		DBObject dbObject = new BasicDBObject(map);
		getCollection(collectionName).remove(dbObject);
	}
	
	/**
	 * 删除操作,根据主键
	 * <br>------------------------------<br>
	 * @param id			
	 * @param collectionName
	 */
	public static void delete(String id, String collectionName) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("_id", new ObjectId(id));
		delete(map, collectionName);
	}
	
	/**
	 * 删除全部
	 * <br>------------------------------<br>
	 * @param collectionName
	 */
	public static void deleteAll(String collectionName) {
		getCollection(collectionName).drop();
	}
	
	/**
	 * 修改操作</br>
	 * 会用一个新文档替换现有文档,文档key结构会发生改变</br>
	 * 比如原文档{"_id":"123","name":"zhangsan","age":12}当根据_id修改age 
	 * value为{"age":12}新建的文档name值会没有,结构发生了改变
	 * <br>------------------------------<br>
	 * @param whereMap		
	 * @param valueMap		
	 * @param collectionName
	 */
	public static void update(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {
		executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){
			public DBObject doCallback(DBObject valueDBObject) {
				return valueDBObject;
			}
		});
	} 
	
	/**
	 * 修改操作,使用$set修改器</br>
	 * 用来指定一个键值,如果键不存在,则自动创建,会更新原来文档, 不会生成新的, 结构不会发生改变
	 * <br>------------------------------<br>
	 * @param whereMap		
	 * @param valueMap		
	 * @param collectionName
	 */
	public static void updateSet(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {
		executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){
			public DBObject doCallback(DBObject valueDBObject) {
				return new BasicDBObject("$set", valueDBObject);
			}
		});
	} 
	
	/**
	 * 修改操作,使用$inc修改器</br>
	 * 修改器键的值必须为数字</br>
	 * 如果键存在增加或减少键的值, 如果不存在创建键
	 * <br>------------------------------<br>
	 * @param whereMap		
	 * @param valueMap		
	 * @param collectionName
	 */
	public static void updateInc(Map<String, Object> whereMap, Map<String, Integer> valueMap, String collectionName) {
		executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){
			public DBObject doCallback(DBObject valueDBObject) {
				return new BasicDBObject("$inc", valueDBObject);
			}
		});
	} 
	
	/**
	 * 修改
	 * <br>------------------------------<br>
	 * @param collectionName
	 * @param whereMap
	 * @param valueMap
	 * @param updateCallback
	 */
	private static void executeUpdate(String collectionName, Map whereMap, Map valueMap, UpdateCallback updateCallback) {
		DBObject whereDBObject = new BasicDBObject(whereMap);
		DBObject valueDBObject = new BasicDBObject(valueMap);
		valueDBObject = updateCallback.doCallback(valueDBObject);
		getCollection(collectionName).update(whereDBObject, valueDBObject);
	}
	
	interface UpdateCallback {
		
		DBObject doCallback(DBObject valueDBObject);
	}
	
	/**
	 * 获取集合(表)
	 * <br>------------------------------<br>
	 * @param collectionName
	 * @return
	 */
	public static DBCollection getCollection(String collectionName) {
		return db.getCollection(collectionName);
	}
}

mongodb-java api&&springboot整合mongodb ​ MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。​ MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。​ MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 阅读详情

相关推荐

MongoDB总结

1.MongoDB 1.1.MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富的,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。 MongoDB最大的特点是它支持的查询...

fechinchu的博客 723

Java操作mongodb增删改查的基本操作

删除一条数据:db.集合名称.remove({name:“张三”},{justOne:true});db.集合名称.find().limit(number).skip(number);增加多条数据:db.集合名称.insert({name:“张三”,sex:"男"});db.集合名称.update({查询条件},{$inc:{字段名:number(1)}})9.修改数据:db.集合名称.update({查询条件},{$set:{更新内容}},包含张的内容:db.集合名称.find({name:/张/})

qq_59510147的博客 2403

利用Virtuoso IC 618进行LDO稳定性分析与补偿设计

本文详细介绍了如何利用Virtuoso IC 618进行LDO稳定性分析与补偿设计。通过搭建仿真环境、运行STB分析诊断环路问题,并深入探讨密勒补偿、调零电阻等关键技术,帮助工程师在Virtuoso平台中高效完成LDO的稳定性优化与验证,确保芯片在各种工艺角下的鲁棒性。

weixin_29170327的博客 162

Java API操作MongoDB

本文介绍了怎样通过javaAPI连接操作MongoDB数据库。

haokelaicds的博客 4389

麒麟信安3.3-6C电网版虚拟机安装避坑指南:从ISO下载到SSH配置全流程

本文提供麒麟信安3.3-6C电网版虚拟机的详细安装与配置指南。针对电力行业仿真测试需求,重点解析从ISO镜像获取、虚拟机环境准备、安装过程中的三大“雷区”(如多管理员密码逻辑、分区方案、网络配置)到首次启动后的网络、SSH及root策略配置的全流程避坑要点,帮助技术人员高效、安全地完成部署。

rainy的博客 854

浅谈车联网概述-1

车联网技术目前在车企中应用广泛,车联网通过车载传感器、无线通信等技术,能够将车辆上百的传感器数据上传至云端,当前智能网联车辆可以理解为一个“大号”手机。

Hello, World! 新能源汽车智能网联工程师,分享日常工作思考。 560

java操作mongodb详解

java操作mongo,比较详细,适用生产环境

Rudolf__的博客 4042

警惕AI依赖:如何避免数字水蛭侵蚀你的认知能力

在人工智能技术日益普及的今天,人机协作已成为现代工作流的核心范式。其原理在于通过算法模型辅助人类完成信息处理、内容生成等任务,从而提升效率。然而,过度依赖AI可能导致认知卸载,引发思考能力退化等潜在风险。从技术价值看,AI的核心在于增强而非替代人类智能,关键在于建立健康的协作模式。在应用场景上,无论是编程开发、内容创作还是决策分析,用户都需警惕工具依赖对深度工作、创造性思维和决策责任的侵蚀。本文聚焦于识别AI依赖的早期信号,并提供构建分阶段使用流程、将AI作为质疑者等具体策略,旨在帮助读者守护核心认知能力,

weixin_30240349的博客 625

MongoDB的JAVA API操作增删改查及批处理

记得需要jar包驱动 mongo-java-driver-3.2.2.jar 而且连接的是无密码的Windows下的MongoDB 链接: https://pan.baidu.com/s/1TwDhAB-MkvhmahWWz22hEA 提取码: dj8y 别人的链接 创建数据库连接 public static MongoDatabase getMongoDB() { //创建客户端 //...

C_time的博客 437

思科模拟器汉化教程(附带中文汉化包)

思科模拟器是一种模拟Cisco网络设备的软件工具。它可以模拟Cisco网络设备的所有功能,包括路由器、交换机、防火墙等,并提供了一个可视化的用户界面,让用户可以通过图形化的方式来管理网络设备。思科模拟器因其便捷、易用的特点被广泛应用于网络工程师的实验、测试和培训等方面思科模拟器的功能是强大的,但当我们在使用思科模拟器的时候就会有一些烦恼,由于思科是全球最大的企业级网络设备供应商之一。思科公司的产品和服务被广泛应用于各种领域和行业,所以思科模拟器默认是全英文的,但是在最新版本中是支持中文的。

2302_76908369的博客 4万+

基于STM32L4XX、HAL库的MMA8452QR1姿态传感器驱动程序设计

/ HAL库需要左移1位。#define MMA8452Q_I2C_ADDRESS 0x1D // SA0=1时的地址。* @param range: 量程(MMA8452Q_RANGE_2G/4G/8G)* @param haccel: MMA8452Q句柄。* @param haccel: MMA8452Q句柄。* @param haccel: MMA8452Q句柄。* @param haccel: MMA8452Q句柄。* @param haccel: MMA8452Q句柄。

zhusl6688的博客 771

在Ubuntu上MongoDB的操作和使用

一、环境配置 1.安装及检查版本 sudo apt-get install mongodb //安装MongoDB mongo -version //安装之后检测版本 测试出现如下图则安装成功 2.服务的启动 sudo service mongodb start //启动MongoDB服务 sudo service mon...

Pinyk的博客 3565

【HAL库】STM32CubeMX开发----STM32F407----ETH+LWIP----TCPclient客户端

STM32F407开发板 为TCPclient客户端,PC端 为TCPserver服务端,相互之间的发送和接收实验。

MQ0522的博客 3048

java使用MongoDB 及window下MongoDB安装使用

1、下载MongoDB对应版本zip,这些只介绍windows版本 http://www.mongodb.org/downloads 2、把下载的zip下bin下exe拷贝到新的一个文件例如:F:\Program Files\MongoDB 2.6 Standard\bin下,外面创建data和log目录 3、cmd进入对应目录F:\Program Files\MongoDB

xuguiyi100的专栏 706

智能手表 BOM 表与版本管理记录

试产与量产阶段 智能手表 BOM 表与版本管理记录

hoony123的博客 1053

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Mongodb java api操作

/update.pushAll("interest", new String[]{".net","mq"}) 用法同push,只是pushAll一定可以追加多个值到一个数组字段内。//一定是查询出来的DBObject,否则会丢掉一些列,整体更新。

wade1010的专栏 1463

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

MongoDB 通过 Maven 用 Java API 进行增删改查

1. 源码/** * App.java */ package com.jiecxy;import com.mongodb.Block; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongo

Nothing is impossible 3271

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

mongodb java api常用方法的使用以及和spring的集成使用

本篇文章主要介绍了mongodb对应java的常用增删改查的api,以及和spring集成后mongoTemplate的常用方法使用,废话不多说,直接上代码: 1.首先上需要用到的两个实体类User和Home,对应用户和家乡 import java.util.List; import org.springframework.data.mongodb.core.mapping.Document

我是明星的专栏 6924
上一篇: MySQL- 复制(一)
下一篇: mongodb- Java API 查询操作
胸口碎大石_
博客等级 码龄17年 1154粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值