You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Spring Data MongoDB Java API在$project阶段编写generatedDate: new Date()

实现方式1:使用官方提供的日期操作API(推荐)

直接用Spring Data MongoDB内置的DateOperators.Now工具类,这是最规范的写法,兼容性最好,将你代码中标注的行替换为以下内容即可:

.and(DateOperators.Now.now()).as("generatedDate");

需要提前导入对应工具类:

import org.springframework.data.mongodb.core.aggregation.DateOperators;

实现方式2:使用原生表达式写法

如果你的Spring Data MongoDB版本支持表达式注入,也可以直接写MongoDB原生的表达式逻辑,写法更贴近shell语句:

.andExpression("new Date()").as("generatedDate");

完整代码示例

修改后的完整ProjectionOperation代码如下:

ProjectionOperation finalProject = project("coachingSummary", "formCreatedDate")
    .and("$patientContact.organization.name").as("customerName")
    .and("coach")
    .nested(Fields.from(
            Fields.field("firstName", "coach.firstName"),
            Fields.field("lastName", "coach.lastName"),
            Fields.field("employeeId", "coach._id")
    ))
    .and("patient")
    .nested(Fields.from(
            Fields.field("firstName", "patientContact.patient.firstName"),
            Fields.field("lastName", "patientContact.patient.lastName"),
            Fields.field("contactId", "patientContact._id")
    ))
    .and(DateOperators.Now.now()).as("generatedDate");

说明

以上两种写法生成的聚合语句都会匹配你需要的generatedDate: new Date()逻辑,时间由MongoDB服务端在执行聚合操作时生成,不会使用Java应用侧的本地时间,完全符合你的需求。

内容的提问来源于stack exchange,提问作者vbg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:24:06