当前位置: 首页 > 知识库问答 >
问题:

spring data mongodb嵌入式查询

国阳
2023-03-14
{
"_id" : "7959305563",
"_class" : "com.loylty.messagingEngine.entities.message.GroupIdDeliveryStatusReport",
"DATA_LIST" : [ 
    {
        "_id" : "7959305562-1",
        "mobile" : "9566337867",
        "status" : "DELIVRD",
        "senttime" : "2018-01-09 14:19:42",
        "dlrtime" : "2018-01-09 14:57:06",
        "custom" : "9566337867"
    }, 
    {
        "_id" : "7959305562-2",
        "mobile" : "9566337867",
        "status" : "DELIVRD",
        "senttime" : "2018-01-09 14:19:42",
        "dlrtime" : "2018-01-09 14:57:05",
        "custom" : "9566337867"
    }, 
    {
        "_id" : "7959305562-3",
        "mobile" : "9566337867",
        "status" : "DELIVRD",
        "senttime" : "2018-01-09 14:19:42",
        "dlrtime" : "2018-01-09 14:57:04",
        "custom" : "9566337867"
    }
 ]
}

GroupIdDeliveryStatusReport的结构

@Document(collection = "GROUP_ID_DELIVERY_STATUS")
public class GroupIdDeliveryStatusReport {

@Id
@Field("GROUP_ID")
private String groupId;

@Field("DATA_LIST")
private List<SolInfiniGroupIdData> data;

public String getGroupId() {
    return groupId;
}

public void setGroupId(String groupId) {
    this.groupId = groupId;
}

public List<SolInfiniGroupIdData> getData() {
    return data;
}

public void setData(List<SolInfiniGroupIdData> data) {
    this.data = data;
}

}

如果我不能恰当地描述,请原谅我。

db.getCollection('GROUP_ID_DELIVERY_STATUS').aggregate(
    { "$unwind" : "$DATA_LIST"},
    {
        "$match" : {"DATA_LIST.status": "DELIVRD" }
    },
    { $group: { _id: null, count: { $sum: 1 } } }
)

我就是这样写的

package com.loylty.messagingEngine.service.Impl;

import com.loylty.messagingEngine.service.GroupIdDeliveryStatusReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.stereotype.Service;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;

@Service
public class GroupIdDeliveryStatusReportServiceImpl implements 
GroupIdDeliveryStatusReportService {

@Autowired
private MongoOperations mongoOperations;

@Override
public void getDeliveryCount() {
    Aggregation aggregation = newAggregation(
            //match(Criteria.where("_id").in("7959305563")), //Use this if you want to do this operation for particular document only
            unwind("DATA_LIST"),
            match(Criteria.where("DATA_LIST.status").is("DELIVRD")),
            project("DATA_LIST._id")
    );
    AggregationResults<String> groupResults
            = mongoOperations.aggregate(aggregation, "GroupIdDeliveryStatusReport", String.class);
    int count = groupResults.getMappedResults().size();

}
}

共有1个答案

丘浩宕
2023-03-14

这应该管用。

Aggregation aggregation = newAggregation(
        //match(Criteria.where("_id").in("7959305563")), Use this if you want to do this operation for particular document only
        unwind("DATA_LIST"),
        match(Criteria.where("DATA_LIST.status").is("DELIVRD"))
        project("DATA_LIST._id")
    );

AggregationResults<String> groupResults
        = mongoTemplate.aggregate(aggregation, "GroupIdDeliveryStatusReport", String.class);
    int count = groupResults.getMappedResults().size();
 类似资料:
  • 我用Mongoose定义了以下模式: 我尝试执行以下查询: 查询不响应,并且从不进入回调函数。这很奇怪,因为这种类型的查询(搜索两个字符串字段)适用于我定义的另一个模式,但不适用于这个模式。另一种模式更简单,不需要任何嵌入文档。 [更新] 我试过你的建议,但不行。我认为只有两个选择: 1.我发布的模式有问题。 多谢!

  • 我有时会在pom中看到以下声明。xml。。。 如您所见,sping-boo-starter-web被声明为tomcat-embed-jasper。 是不是sping-boo-starter-web已经有一个嵌入式tomcat了?为什么一些开发人员仍然声明tomcat-embed-jasper以及boot-starter-web?还是有什么原因?

  • 问题内容: 我将使用视图优化MySQL嵌入式查询,但不确定是否会产生效果: 我想将其转换为: 我听说过SQL Server中的“索引视图”,但是我不确定MySQL。任何帮助,将不胜感激。谢谢! 问题答案: SQL Server中的索引视图通常称为“物化视图”,MySQL不支持。与其他供应商相比,MySQL的VIEW支持相当有限- 这些限制在其文档中列出。 普通视图只是准备好的SQL语句- 使用您提

  • 我在java中有两个类,分别是txn和txnID,我想从嵌入表中检索txnID值,下面是我的txn类结构: 以下是嵌入式类结构: 我的查询语句如下: 错误消息如下:

  • 回顾介绍中, php构建了一个层级系统. 最高层是提供用户空间函数和类库的所有扩 展. 同时, 其下是服务API(SAPI)层, 它扮演了webserver(比如apache, iis以及命令行接口 cli)的接口. 在这许多sapi实现中有一个特殊的sapi就是嵌入式sapi. 当这个sapi实现被构建时, 将 会创建一个包含所有你已知的php和zend api函数以及变量的库对象, 这个库对象