mongodb - 在 mongo DB 中通过 id 减去两个日期并以秒为单位返回值作为 json 元素
问题描述
场景:我试图在 MongoDB 中减去两个日期,并通过我提供的任何 ID 返回处理事件所花费的时间。我能够使用查询#1 从 mongo 搜索中获得以下结果(代码#1)
查询#1 返回数据库中的所有值,我只想获取两个 id
我试图在查询#1 或任何相关内容中保留以下 IN 查询(查询#2),但运气不好,任何帮助都会很有帮助
代码#1:
/* 1 */
{
"_id" : "123",
"receivedTime" : ISODate("2021-08-10T17:56:56.305Z"),
"deliveryTime" : ISODate("2021-08-10T17:56:59.941Z"),
"processedTime" : 3.636
}
/* 2 */
{
"_id" : "234",
"receivedTime" : ISODate("2021-08-10T17:57:00.223Z"),
"deliveryTime" : ISODate("2021-08-10T17:57:00.691Z"),
"processedTime" : 0.468
}
/* 3 */
{
"_id" : "345",
"receivedTime" : ISODate("2021-08-10T17:57:19.812Z"),
"deliveryTime" : ISODate("2021-08-10T17:57:20.331Z"),
"processedTime" : 0.519
}
查询#1:
db.mycollection.aggregate([
{
"$project": {
"receivedTime": 1,
"deliveryTime": 1,
"processedTime": {
"$divide": [
{
"$subtract": [
"$deliveryTime",
"$receivedTime"
]
},
1000 //1000 for sec, 60000 for minute, 3600000 for hour
]
}
}
}
])
查询#2:
db.mycollection.find({
"_id": {
$in: [
"123",
"234"
]
}
}
)
解决方案
添加$match
阶段作为第一阶段以过滤文档_id
。接下来,进入$project
返回文档所需格式的阶段。
db.mycollection.aggregate([
{
$match: {
"_id": {
$in: [
"123",
"234"
]
}
}
},
{
"$project": {
"receivedTime": 1,
"deliveryTime": 1,
"processedTime": {
"$divide": [
{
"$subtract": [
"$deliveryTime",
"$receivedTime"
]
},
1000//1000 for sec, 60000 for minute, 3600000 for hour
]
}
}
}
])
推荐阅读
- ios - Flutter - 如何根据环境有条件地设置变量(TestFlight / App Store)
- c# - 为什么我不能使用自己的函数创建游戏对象?
- android - 在 Kotlin 的模拟器中看不到任何图像
- javafx - javafx.fxml.LoadException - ?
- python - 在字典中返回值的函数
- android - 从 Android 应用程序中读取 Google 电子表格并列出该数据?
- python - TypeError:('关键字参数不理解:','输入')
- crystal-reports - 水晶报表页码
- android - 用于检索数据的 SQLite 查询 Order By
- javascript - 限制用户对消息的反应