gpt4 book ai didi

mongodb - 使用 reactivemongo 将新日期转换到聚合管道中

转载 作者:可可西里 更新时间:2023-11-01 09:17:00 28 4
gpt4 key购买 nike

我正在尝试将新的 Date 值制作成 reactivemongo 聚合管道内的投影。

我见过其他人在 mongo shell 中创建它的示例,如下所示:

db.runCommand({
"aggregate" : "collectionName", "pipeline": [
{ $project: { exampleDate: new Date() } }
]
})

问题出在 new Date() 上。使用 reactivemongo,投影将是一个 Project 对象:

Project( ("exampleDate", BSONValue) )

其中 BSONValue 可以是 BSONString。但这会导致 mongoDB 忽略此类字符串,因为结果将是:

{ "aggregate" : "collectionName", "pipeline": [ { $project: { exampleDate: "new Date()" } } ] }

有没有办法插入不带引号的 new Date()

P.S.:我也尝试过使用 BSONDateTime(0)但这会导致:

{ $date: 0 }

这使得 mongoDB 抛出一个无效的 $date 运算符异常。

最佳答案

由于 java.util.Date 类的默认构造函数给出了调用构造函数的时间(又名“现在”),看来您有兴趣构造一个 BSONDateTime 具有相同的“现在”时间。 BSONDateTime 的参数应该是一个 Long 值,其中包含以毫秒为单位的 UTC 时间。您可以从 java.lang.System.currentTimeMillisjava.util.Date.getTime 方法中获取它。所以,我想你想要的是:

Project( ("exampleDate", BSONDateTime(System.currentTimeMillis()) )

val now = new java.util.Date()
Project( ("exampleDate", BSONDateTime(now.getTime) )

关于mongodb - 使用 reactivemongo 将新日期转换到聚合管道中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576234/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com