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

Mongo DB query的等效JAVA Spring Boot代码是什么

黄跃
2023-03-14

我已经编写了MongoDB查询来显示上周的用户数,基于配置文件集合中的lastActive字段,lastActive字段是日期字符串。有人能帮我用SimpleDataformat类或LocalDate类编写相应的Spring Boot java代码吗。请

var today = new Date();
var lastWeekStart = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
var lastWeekEnd = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 7);
var start = new Date(lastWeekStart.setHours(0,0,0,0));
var end = new Date(lastWeekEnd.setHours(23,59,59,999));

db.Profile.aggregate([
{
    "$group": {
        "_id": null,
        "total": { "$sum": 1 },
        "LastWeekUsersList": {
            "$sum": {
                "$cond": [
                    { 
                        "$and": [
                            { "$gte": [ "$lastActive", start ] },
                            { "$lte": [ "$lastActive", end ] }
                        ]
                    },
                    1,
                    0
                ]
            }
        }
    }
}
])

这个如何写相应的Spring Boot代码,我不知道如何写mongo db的java等效查询,请帮我一个人

共有1个答案

史旺
2023-03-14

你可以试试这样的(未经测试)

    @Autowired
    private MongoOperations mongoOperations;

    public MongoOperations getMongoOperations() {
        return mongoOperations;
    } 
   .... 
    Instant start = Instant.parse("2020-07-13T10:30:00.000Z");
    Instant end = Instant.parse("2020-07-20T10:37:00.000Z");
    Criteria criteria = new Criteria().andOperator(
        Criteria.where("lastActive").gt(start),
        Criteria.where("lastActive").lt(end)
    );
    ConditionalOperators.Cond sumCond = ConditionalOperators.when(criteria).then(true).otherwise(false);
    GroupOperation groupOperation = Aggregation.group().count().as("total").sum(sumCond).as("LastWeekUsersList");
    List<MappedType> mappeRes = getMongoOperations().aggregate(Aggregation.newAggregation(
        groupOperation
    ), "myCollecgtion", MappedType.class).getMappedResults();
 类似资料:
  • 我不熟悉和以及我尝试使用的许多其他技术,所以我希望得到详细的回答。 有没有办法防止一个或多个字段使用序列化为String_格式,但不使用任何类型的注释? 类似于:。我的对象是一个类的实例,它扩展了另一个类,并实现了一个接口,依此类推,因此字段来自类的层次结构。我需要该对象的表示,但只包含某些字段,因此我可以通过方法在模拟请求中发送该。我使用的是。

  • 问题内容: LINQ的Java等效项是什么? 问题答案: 现在使用Java 8向我们介绍了Stream API,这在处理集合时是类似的事情,但与Linq不太一样。 如果它是您正在寻找的ORM,例如Entity Framework,那么您可以尝试Hibernate

  • 问题内容: 我希望我的JComboBox将多个选项组合在一起,类似于HTML : 我在Swing中找不到任何解决方案。为Combobox操纵UI渲染器似乎不是一个好主意,因为它依赖于OS和L&F(并且它们是私有的,因此无法扩展)。 问题答案: 考虑以下实现作为如何应用自定义样式和创建不可选择项目的基本指南:

  • 问题内容: 我已经用谷歌搜索,但无法找出什么是等效的。 这是我唯一能找到的(Swift的替代方法responsesToSelector:),但在我的情况下并没有太大意义,因为它检查了委托的存在,我没有委托,我只想检查是否存在新的API在设备上运行时是否返回,如果不是,则返回原先的api版本。 问题答案: 如前所述,在 大多数情况下,您可以使用可选的unwrapper运算符来实现所需的功能。这样,当

  • 问题内容: 大多数Java代码也是语法上有效的Groovy代码。但是,有一些例外使我想到了这个问题: 在Groovy中,Java中哪些构造/功能在语法上无效? 请提供无效的Groovy代码(Groovy 1.6)的Java代码(Java 1.6)的具体示例。 更新: 到目前为止,我们有五个语法上有效的Java代码示例,它们不是有效的Groovy代码: 数组初始化 内部班 是Groovy中的关键字,

  • 问题内容: 有Swift的等效项吗?在中,我们通常使用: 如何在Swift中实现相同目标?我发现了一个功能: 但是,它很长,根本不方便。 问题答案: 将在斯威夫特的世界同样存在。 的,和参数均标有 该装置的同时调用该函数我们可以忽略这些参数的关键字。在这种情况下,将使用其默认值。 这得出一个结论,该方法调用可以简化为: Swift 5- 没什么变化,仍然可以这样工作。