【Java、MongoDB】程序控制非关系数据库

news/2024/10/25 15:23:22/

步骤:

(1)连接

连接字符串

(2)CRUD

类与接口

解析

(3)maven管理方法

依赖

<dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-legacy</artifactId><version>4.10.2</version></dependency>

示例

package org.example;import com.mongodb.client.*;
import org.bson.Document;import java.util.Arrays;/*** @author gzb Email:a@wk2.cn* @since 2023/11/06 14:27*/
public class t1 {public static void main(String[] args) {MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");MongoDatabase mongoDatabase = mongoClient.getDatabase("myDB");MongoCollection<Document> collection = mongoDatabase.getCollection("video");System.out.println("before operation");insertExample(collection);System.out.println("after operation");FindIterable<Document> documents = collection.find();for (Document document: documents){System.out.println(document.toJson());}mongoClient.close(); // 记得关闭客户端连接}private static void insertExample(MongoCollection<Document> collection) {collection.insertMany(Arrays.asList(new Document("title", "MongoDB installation").append("author", "Mike").append("tags", Arrays.asList("MongoDB", "database")).append("views", 1221).append("evaluation", new Document("like", 22).append("forward", 10)),new Document("title", "Java programming  ").append("author", "Mike").append("tags", Arrays.asList("Java", "course")).append("views", 3411).append("evaluation", new Document("like", 112).append("forward", 32)),new Document("title", "Music recommend").append("author", "Joe").append("tags", Arrays.asList("music", "pop")).append("views", 38).append("evaluation", new Document("like", 2))));}}

操作

插入

   private static void insertExample(MongoCollection<Document> collection) {collection.insertMany(Arrays.asList(new Document("title", "MongoDB installation").append("author", "Mike").append("tags", Arrays.asList("MongoDB", "database")).append("views", 1221).append("evaluation", new Document("like", 22).append("forward", 10)),new Document("title", "Java programming  ").append("author", "Mike").append("tags", Arrays.asList("Java", "course")).append("views", 3411).append("evaluation", new Document("like", 112).append("forward", 32)),new Document("title", "Music recommend").append("author", "Joe").append("tags", Arrays.asList("music", "pop")).append("views", 38).append("evaluation", new Document("like", 2))));}

删除

private static void delete(MongoCollection<Document> collection){collection.deleteMany(Filters.eq("author", "Joe"));}

更新

 private static void update(MongoCollection<Document> collection) {collection.updateOne(new Document("title", "MongoDB installation").append("author", "Mike"),Updates.inc("views", 1));}

还有set,pop,push等操作 

替换

private static void replace(MongoCollection<Document> collection) {collection.replaceOne(Filters.eq("author", "tom"), new Document("author", "jacky").append("count",2));}

查找

private static void select(MongoCollection<Document> collection) {Bson filter = Filters.gt("evaluation.like", 10);FindIterable<Document> documents = collection.find(filter);for (Document document : documents) {System.out.println(document.toJson());}}

分组

 MongoCursor<Document> mongoCursor = collection.aggregate(Arrays.asList(Aggregates.match(Filters.empty()),Aggregates.group("$author", Accumulators.sum("count", 1)))).cursor();


http://www.ppmy.cn/news/1207795.html

相关文章

deeplog中输出某个 event 的概率

1 实现之后效果 # import DeepLog and Preprocessor import numpy as np from deeplog import DeepLog import torch# Create DeepLog object deeplog DeepLog(input_size 10, # Number of different events to expecthidden_size 64 , # Hidden dimension, we suggest 64…

工业摄像机参数计算

在工业相机选型的时候有点懵&#xff0c;有一些参数都不知道咋计算的。有些概念也没有区分清楚。‘’ 靶面尺寸 CMOS 或者是 CCD 使用几分之几英寸来标注的时候&#xff0c;这个几分之几英寸计算的是什么尺寸&#xff1f; 一开始我以为这个计算的就是靶面的实际对角线的尺寸…

第五章 :Spring Boot配置指南(二)

第五章 :Spring Boot 配置指南(二) 前言 本章节知识:分析 Spring Boot Environment 接口设计体系以及在run中如何准备环境变量的过程。 以下示例源码以及源码分析 Spring Boot 版本均为 2.2.0.RELEASE 一、什么是 Environment? Environment 是 springboot 核心的环境配…

NVM安装node后提示没有对应npm包(即:无法将“npm”项识别为 cmdlet、函数、脚本文件)

背景 windows11 node版本降低到v12.22.12后&#xff0c;执行&#xff1a;nvm -v npm -v npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果 包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置 …

内存条选购注意事项(电脑,笔记本)

电脑内存条的作用、选购技巧以及注意事项详解 - 郝光明的个人空间 - OSCHINA - 中文开源技术交流社区 现在的电脑直接和内存条联系 电脑上的所有输入和输出都只能依靠内存条 现在买双条而不是单条 买两个相同的内存条最好 笔记本先分清是低电压还是标准电压&#xff0c;DD…

Modern C++ 转换构造函数和类型转换函数

在 C/C 中&#xff0c;不同的数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换&#xff08;隐式类型转换&#xff09;&#xff0c;需要用户显式地指明如何转换的称为强制类型转换。 不管是自动类型转换还是强制类型转换&#xff0c;前提必须是编译器知道如何…

简单漂亮的登录页面

效果图 说明 开发环境&#xff1a;vue3&#xff0c;sass 代码 <template><div class"container"><div class"card-container"><div class"card-left"><span><h1>Dashboard</h1><p>Lorem ip…

【广州华锐互动】VR安防网络综合布线仿真实训打造沉浸式的教学体验

随着科技的快速发展&#xff0c;综合布线技术在建筑、数据中心、网络基础设施等领域的应用越来越广泛。为了适应这一趋势&#xff0c;传统的教学方法已经无法满足现代教育的需求。因此&#xff0c;采用创新的教学手段&#xff0c;如虚拟现实&#xff08;VR&#xff09;技术&…