mongoTemplate查询数据方式

MongoDB-第四章-查询 查询         对MongoDB进行新增、修改和删除后,最主要的功能就是对数据(集合)进行查询,MongoDB支持丰富的查询功能。 查询简介         使用find命令可以查询集合中的文档,并返回符合要求的文档子集。查询命令的第一个参数是查询的模式,第二个参数是指定返回的键。查询的模式有些类似JPA中的查询模式,只需要表述需要的模式就行, 阅读详情

方式一:

Query query = new Query();
// 时间区间
if (StrUtil.isNotEmpty(param.getExpenseTimeBegin()) && StrUtil.isNotEmpty(param.getExpenseTimeEnd())) {
	query.addCriteria(Criteria.where("statisticsDatetime").gte(param.getExpenseTimeBegin()).lte(param.getExpenseTimeEnd()));
}
// 门店
if (param.getStoreId() != null) {
	query.addCriteria(Criteria.where("storeId").is(param.getStoreId()));
}
// 父门店
if (param.getParentStoreId() != null) {
	query.addCriteria(Criteria.where("parentStoreId").is(param.getParentStoreId()));
}

List<ContractItemExpenseStatistics> statisticsList = mongoTemplate.find(query, ContractItemExpenseStatistics.class, MongodbTableEnum.expense_statistics.getValue());

此方式在数据量较大的情况下速度会比较慢,需要将数据全部取出来,然后再映射成实体类,在数据量比较大的话不推荐这种方式

方式二:

DBObject  query = new BasicDBObject(); //setup the query criteria 设置查询条件
// 时间区间
if (StrUtil.isNotEmpty(param.getExpenseTimeBegin()) && StrUtil.isNotEmpty(param.getExpenseTimeEnd())) {
	query.put("statisticsDatetime", new BasicDBObject("$gte", param.getExpenseTimeBegin()).append("$lte", param.getExpenseTimeEnd()));
}
// 门店
if (param.getStoreId() != null) {
	query.put("storeId", param.getStoreId());
}
// 父门店
if (param.getParentStoreId() != null) {
	query.put("parentStoreId", param.getParentStoreId());
}

DBObject fields = new BasicDBObject(); //only get the needed fields. 设置需要获取哪些域
fields.put("statisticsDatetime", 1);
fields.put("storeId", 1);
fields.put("parentStoreId", 1);
fields.put("expenseStatisticsList", 1);

DBCursor dbObjects = mongoTemplate.getCollection(MongodbTableEnum.expense_statistics.getValue()).find(query, fields);

log.debug("开始时间:" + DateUtil.formatDateTime(new Date()));
int j = 0;

List<ContractItemExpenseStatistics> statisticsList = new ArrayList<>();
while (dbObjects.hasNext()) {
	DBObject next = dbObjects.next();
	j = j + 1;
	ContractItemExpenseStatistics statistics = new ContractItemExpenseStatistics();

	// 各个项目统计数据
	try {
		JSONArray jsonArray = JSONUtil.parseArray(next.get("expenseStatisticsList"));
		List<ExpenseStatisticsJsonVo> expenseStatisticsList = new ArrayList<>();
		for (int i = 0; i < jsonArray.size(); i++) {
			ExpenseStatisticsJsonVo jsonVo = JSONUtil.toBean(jsonArray.get(i).toString(), ExpenseStatisticsJsonVo.class);
			expenseStatisticsList.add(jsonVo);
		}
		statistics.setExpenseStatisticsList(expenseStatisticsList);
		statistics.setStatisticsDatetime(next.get("statisticsDatetime").toString());
		statistics.setStoreId(Integer.parseInt(next.get("storeId").toString()));
		statistics.setParentStoreId(Integer.parseInt(next.get("parentStoreId").toString()));
		statisticsList.add(statistics);
	}catch (Exception e){
		e.printStackTrace();
	}
}
log.debug("结束时间:" + DateUtil.formatDateTime(new Date()));
log.debug("j=" + j);

这种方法是使用的游标的方式,使用游标逐个获取数据,同时可以指定只获取哪些域,而不是全部获取回来,所以数据量比较大的时候还是使用游标的方式手动映射成实体类比较快!

Spring Boot 访问 MongoDB 一, MongoTemplate 的⽅式 第1步:基于maven新建springboot⼯程 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> <version>2.2.2.RELEASE</version> </depen 阅读详情

相关推荐

强化学习——day16 动态规划算法

动态规划(dynamic programming)是程序设计算法中非常重要的内容,能够高效解决一些经典问题,例如背包问题和最短路径规划。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。本章介绍如何用动态规划的思想来求解在马尔可夫决策过程中的最优策略

想太多的学习日志 1550

MongoTemplate

配置: <!--mongo--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> spr...

hello world 1185

IT运维必备 开源Urbackup 备份系统部署教程 实战操作

手动添加ip方式检查是否在线 ,linux需要按上述步骤6配置server端地址 不然一直不会进去状态栏。安装依赖sudo apt install -y libcrypto++-dev。补充客户端手动触发备份命令 (一般在服务端操作即可,特殊情况客户端进行操作)修改ubuntu主机名 建议修改为ip 方便上线以ip命名上线。默认客户端安装完毕大概几分钟之内服务端会自动上线。配置客户端指向server端地址。(2)ubuntu 客户端设置。新起一个远程窗口查看配置状态,配置客户端备份文件目录。

qq_34981755的博客 1281

MongoDB 查询 命令及 MongoTemplate

MongoDB 查询 命令及 MongoTemplate

lizhengyu891231的博客 1488

本地构建AI智能分析助手之 05 PandasAI如何MySQL数据库 (教程含源码)

与 PostgreSQL 连接器类似,MySQL 连接器允许您连接到 MySQL 数据库。即使您不熟悉 MySQL 或 PandasAI,它也设计得易于使用。

iCloudEnd的博客 703

2026.3.13:docker compose运行了Milvus 6个月,占用磁盘近138GB的原因

Docker容器运行Milvus半年后占用138GB磁盘空间,主要原因是容器日志无限增长、容器内写入大量数据未挂载到数据卷,以及未清理临时文件。通过检查发现超大容器目录569035582ce3...占用主要空间。解决方案是使用truncate命令清空容器日志文件(*-json.log),释放磁盘空间。建议配置日志轮转机制,并将数据挂载到宿主机数据卷以避免类似问题。

拥抱具身智能,昇腾Ascend C 194

SpringBoot整合MongoDB,使用mongoTemplate实现高级查询

作者:Java架构笔记 链接:https://zhuanlan.zhihu.com/p/70270239 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 一、前言 最近项目使用MongoDB作为数据主要存取的地方 又是第一次接触MongoDB,也是踩了不少坑... 维护数据无非就是增删改查,而里面最复杂的就是查询了 所以来总结一下有关MongoDB的查询方法 当然如果你在此之前你对MongoDB一点都不了解的话 个人建议点击这里,花三十分钟初步了解一下Mo.

明阳 2945

mongodb的简单查询

MongoDB是一个机遇分布式文件存储的数据库.由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案.

qq_40708942的博客 1596

教你如何阅读Autosar代码(6):常量变量定义

编译器抽象应该为常量的声明和定义定义CONST宏。编译器抽象应该定义VAR宏来声明和定义变量。memclass:常量本身的分类;memclass:变量本身的分类;vartype:变量的类型;type:常量的类型;

wdconan001的博客 958

国科大学习资料--模式识别与机器学习(黄庆明)--2020期末考试题

国科大学习资料–模式识别与机器学习(黄庆明)–2020期末考试题 国科大学习资料–模式识别与机器学习(黄庆明)–2020期末考试题 国科大学习资料–模式识别与机器学习(黄庆明)–2020期末考试题 ============================================================================================================================================================

无名何许人的博客 2601

mongoTemplate的方法和update()

1.引言 mongoTemplate提供了许多的方法,许多的类似的方法,刚开始不知道使用哪一种最好,现在我把他们整理如下,便于选择使用。 2.常用方法 /** * 给附表添加审核进度id * 每个操作带上collectionName, 防止子类错误操作 * * @param formDataApproval 对象 * @author lei...

日日留心的技术专栏 9万+

UniRx之基本语法格式

想要更好的去学习UniRx,我们最好是先理解UniRx 的语法格式。就像我们去学习英语或者汉语一样,理解了基本的语法规则后,再学其他的就信手拈来了。

TxNet 924

mongo java 模糊查询mongoTemplate

MongoTemplate 是 MongoDB 的 Java 驱动程序的一部分,提供了一种简便的方法来查询 MongoDB 数据库。在 MongoTemplate 中,你可以使用模糊查询来查询匹配特定模式的文档。 要在 MongoTemplate 中使用模糊查询,你可以使用正则表达式作为查询条件。例如,你可以使用如下代码来查询以 "app" 开头的所有字符串: Query query= new Q...

weixin_42605397的博客 1237

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

mongoTemplate查询大数据过慢

先上两段代码 代码一 Query query = new Query();queryAfter.addCriteria(Criteria.where("id").in(idList));queryAfter.addCriteria(Criteria.where("time").gte(startTime).lte(endTime));List<TestEntity> lists = ...

weixin_30535167的博客 1078

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SpringBoot 整合 Mongodb 与 MongoTemplate、MongoRepository 用法教程

提供与两种操作方式操作简单 缺点是不够灵活操作灵活,在项目中可以灵活使用这两种方式。

李虹柏的博客 1383

mongo3.4.2 java 封装_对spring中mongoTemplate的封装

1 场景spring集成mongo后,可以使用mongoTemplate进行mongo操作。1.1 当前问题mongoTemplate写入或者更新数据库时,操作对象可以是Java bean实体类也可以是Map对象。 T insert(T objectToSave); T insert(T objectToSave, String collectionName);例子如下:使用map作为存储对象Ma...

weixin_33364098的博客 917

mongodb基于MongoTemplate开发CRUD

7、排序 :query.with(new Sort(Sort.Direction.ASC, “age”). and(new Sort(Sort.Direction.DESC, “date”)))4、大于(创建新的criteria):Criteria gt = Criteria.where(“key”).gt(“条件”): 根据query内的查询条件查询。2、 精准条件:criteria.and(“key”).is(“条件”)模糊条件:criteria.and(“key”).regex(“条件”)

weixin_62169170的博客 322

JAVA连接Mongodb查询基本用法

文章目录导入mongodb依赖 导入mongodb依赖 <!--mongodb依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-dat...

偏偏行 1298

mongoDB在springboot项目中进行增删改查的两种方式

mongoDB在springboot项目中进行增删改查的两种方式 MongoTemplate,直接注入即可使用 有save和insert都为保存,区别在于save会在数据相同时进行修改 @Autowired private MongoTemplate mongoTemplate; //创建数据库集合,集合中的每一条数据为文档 MongoCollection<Document> collection = mongoTemplate.createCollection(ApComment.clas

weixin_45538722的博客 342

0115 springboot template方式操作mongodb

前言 redis性能基准是10w次读写/秒; 但是不适用于下面的场景: 需要缓存,但是经常需要统计,分析和查询。 这种场景适合使用Mongodb; 他是最接近关系数据库的NOSQL; mongodb介绍:::infoC 语言编写,基于分布式文件存储的开源数据库系统,在负载高的时候,可以添加更多的节点,保证服务器性能。可扩展高性能的数据存储方案。mongodb把数据存储为一个文档,数据...

游戏发行平台,跨境电商,低代码,物联网,数字人商业项目架构师 1111

mongodb查询遇到的问题

mongodb查询性能优化

轩1024的博客 901

mongodb(springboot)

(1):投影操作(取别名),将原始字段名投影成指定名称,如将集合中的name投影成noname -> db.emp.aggregate([$project:{noname:"$name"}])(2)$project可以灵活的控制输出的格式,也可以剔除不需要的字段->db.emp.aggregate([$project:{noname:"$name",_id:0,age:1}]):0不展示,1展示。(3)从嵌套文档中排除字段(type字段是一个集合,age为集合里面的一个字段) ->

lds6933784的博客 569

Springboot整合mongodb

总结的关于springboot如何整理mongodb的一些用法

m0_63837020的博客 4093

java操作mongodb之select(一般查询)

ni hao 

sanding的博客 2万+
上一篇: mybatis批量插入数据,数据存在时更新,不存在时插入
下一篇: 动态修改java日志等级
hwmhehe
博客等级 码龄13年 86粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值