gpt4 book ai didi

mongodb - 项目嵌入文档键值,基于 mongoDB 聚合中的条件

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

我有一个名为票证的 mongo 集合,我们将票证详细信息存储在类似的结构文档中,如下所示:

    [
{
"status": "PAUSED",
"lifecycle_dates": {
"OPEN": "d1",
"CLOSED": "d2",
"PAUSED": "d3"
}
},
{
"status": "OPEN",
"lifecycle_dates": {
"OPEN": "d1",
"PAUSED": "d3"
}
},
{
"status": "CLOSED",
"lifecycle_dates": {
"OPEN": "d1",
"CLOSED": "d2"
}
}
]

我需要获取说明工单当前状态和状态日期的数据。

我想像这样投影数据:

[
{
"status": "PAUSED",
"lifecycle_date": "d3"
},
{
"status": "OPEN",
"lifecycle_date": "d1"
},
{
"status": "CLOSED",
"lifecycle_date": "d2"
}
]

如何根据 mongo 聚合管道中的当前状态预测单个生命周期日期?像这样:

{
$project : {
"status" : 1,
"lifecycle_date" : $lifecycle_dates[$status]
}
}

mongo reference document here 中找不到任何引用或类似问题

当前 mongo 版本:3.2

最佳答案

更新的答案:

由于您需要根据status 获取date,您可以使用此聚合查询:

db.test.aggregate([ 
{
$project : {
_id : 0,
status : 1,
lifecycle_date : { $cond: [ {$eq : ["$status","OPEN"]}, "$lifecycle_dates.OPEN", { $cond: [ {$eq : ["$status","CLOSED"]}, "$lifecycle_dates.CLOSED", { $cond: [ {$eq : ["$status","PAUSED"]}, "$lifecycle_dates.PAUSED", "-1" ]} ]} ]}
}
}])

这也与 Mongo 3.2 兼容。

输出:

{ "status" : "PAUSED", "lifecycle_date" : "d3" }
{ "status" : "OPEN", "lifecycle_date" : "d1" }
{ "status" : "CLOSED", "lifecycle_date" : "d2" }

============================================= ==========================

这个答案是针对上一个问题的——

使用这个集合:

db.test.aggregate([
{
$project : {
_id : 0,
status : 1,
lifecycle_date : "$lifecycle_dates.PAUSED"
}
}
])

输出:

{ "status" : "PAUSED", "lifecycle_date" : "d3" }

关于mongodb - 项目嵌入文档键值,基于 mongoDB 聚合中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51493425/

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