使用mongo里的aggregation聚合关键字。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.stereotype.Service;
import java.util.List;
* @author DAI
* @date 2020/5/30 19:08
* @Description TODO
@Service
public class MessageReceiveLogDaoImpl implements MessageReceiveLogDao {
@Autowired
MongoTemplate mongoTemplate;
@Override
public List<MessageCount> countByMessageStatus() {
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.group("messageStatus").count().as("count"),
Aggregation.project("count").and("messageStatus").previousOperation()
AggregationResults<MessageCount> outputTypeCount = mongoTemplate.aggregate(aggregation, MessageReceiveLog.class, MessageCount.class);
return outputTypeCount.getMappedResults();
import lombok.Data;
* @author DAI
* @date 2020/6/1 11:56
* @Description 分组求和
@Data
public class MessageCount {
String messageStatus;
Long count;
前端返回结果
根据messageStatus字段分组统计不同状态的数据量,相当于mysql里的group by 关键字。使用mongo里的aggregation聚合关键字。import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.c..
在工作的过程中,使用MongoDB存储业务数据,有时候想做的不仅仅是将数据从MongoDB中提取出来,可能需要对数据进行分析并加以利用。在党费收缴模块开发过程中,需要根据党支部名称进行分组,统计出党支部内人员的数目,每个党支部应缴党费和实缴党费的总和 等统计信息。
由于spring-data-mongodb-1.9.5.RELEASE版本太低,因此在调用mongoTemplate类型的a...
KaTeX parse error: Expected '}', got 'EOF' at end of input: … "part_mode": "part_mode"
“student_total”: {...
crud参考:https://blog.csdn.net/weixin_39729846/article/details/82626721
mongoTemplate的分页,分组,统计以及聚合Aggregation和mapReduce的使用
package com.star.ac.mongodb.impl;
import java.util.ArrayList;
import java....
在进行数据迁移时,需要从mongodb中获取数据,而数据有比较多,所以不能一次性取出所有数据,需要分批获取数据。分批获取数据主要有两种方式:
Criteria criteria = Criteria.where("typeName").is("rdbms_table")
.and("status").is("ACTIVE")
.and("attributes.versionType").is("formal");
Query query = new Q
使用自定义了时间和字符串的转换规则 存的时候 存字符串 读取的时候 转换为日期类型
但是在按时间查找的时候 也可以使用
下载后 直接运行 Test类 修改下MongodbConfiguration的mongoUrl
写的时候将时间转为字符串 读的时候将字符串转为日期 查找的时候可以使用时间类型 Test类里面都有展示
@Data
@Document(collection = "order_info")
public class OrderMongoEntity extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
整理mango的常用操作以及对应的springmongo template的使用。
1. 根据字段进行查询
db.getCollection('usages').find({"processed":true})
@Component
public class MongoReadWrapper {
@Autowired
private MongoTemplate mongoTemplate;
* 指定field查询
public vo
参考文档 : http://php.net/manual/zh/mongocollection.aggregate.php
tinkphp field没有封装关于mogno的sum用法 ;
所以只能借助与原生的mongoCollection::aggregate()
public function statCallLog($where)
$pipeline
mongodb中对某一个字段的求和操作是通过 aggregate 来实现的:
例如:db.successCard.aggregate({$group:{_id:null,moneysum:{$sum:"$money"}}});
注意:被计算的字段必须是 整型,long或者浮点型
java对它的实现如下
* 计算某个字段是和
* @param colle
在 Spring Boot 中使用 MongoTemplate 查询 MongoDB 数组字段中匹配特定值的数据,可以使用 `Query` 类来构建查询。
具体实现方法如下:
```java
Query query = new Query(Criteria.where("arrayFieldName").is("valueToMatch"));
List<YourEntity> results = mongoTemplate.find(query, YourEntity.class);
其中 `arrayFieldName` 是要查询的数组字段名称,`valueToMatch` 是要匹配的值,`YourEntity` 是数据实体类。
如果你要查询数组字段包含特定值的数据,你可以使用 `Criteria.where("arrayFieldName").in("valueToMatch")`
```java
Query query = new Query(Criteria.where("arrayFieldName").in("valueToMatch"));
List<YourEntity> results = mongoTemplate.find(query, YourEntity.class);
如果你要在数组字段中查询一些特定值,可以使用 $elemMatch
```java
Query query = new Query(Criteria.where("arrayFieldName").elemMatch(Criteria.where("fieldName").is("valueToMatch")));
List<YourEntity> results = mongoTemplate.find(query, YourEntity.class);
以上是最简单的查询方法,MongoTemplate支持多种条件查询,你可以根据需要调整查询语句,以获取更精确的结果.