删除空 MongoDB 聚合
Remove null MongoDB aggregation
如果该字段为空,我想只留空。
数据:
"history": [{
"status": "Not Processed",
"createdAt": {
"$date": "2021-01-26T00:16:26.018Z"
},
"updatedAt": {
"$date": "2021-01-26T00:16:26.018Z"
}
}, {
"status": "Processed",
"updatedAt": {
"$date": "2021-01-26T00:17:25.725Z"
},
"createdAt": {
"$date": "2021-01-26T00:17:25.725Z"
}
}],
输入:
{
"$reduce": {
"input": "$history",
"initialValue": null,
"in": {
"$cond": {
"if": {
$eq: [
"$$this.status",
"Processed"
]
},
"then": "$$this.createdAt",
"else": "$$value"
}
}
}
}
我的一些数据在历史数组中没有 processed 状态。我不想在我的数据中包含 null。 FYR:我在 mongodb 图表中这样做。
您可以在 if 语句的条件中使用布尔表达式。
db.collection.aggregate([
{
$project: {
"res": {
"$reduce": {
"input": "$history",
"initialValue": null,
"in": {
"$cond": {
"if": {
$and: [
{
$eq: [
"$$this.status",
"Processed"
]
},
{
$ne: [
"$$this.status",
null
]
}
]
},
"then": "$$this.createdAt",
"else": "$$value"
}
}
}
}
}
}
])
如果该字段为空,我想只留空。
数据:
"history": [{
"status": "Not Processed",
"createdAt": {
"$date": "2021-01-26T00:16:26.018Z"
},
"updatedAt": {
"$date": "2021-01-26T00:16:26.018Z"
}
}, {
"status": "Processed",
"updatedAt": {
"$date": "2021-01-26T00:17:25.725Z"
},
"createdAt": {
"$date": "2021-01-26T00:17:25.725Z"
}
}],
输入:
{
"$reduce": {
"input": "$history",
"initialValue": null,
"in": {
"$cond": {
"if": {
$eq: [
"$$this.status",
"Processed"
]
},
"then": "$$this.createdAt",
"else": "$$value"
}
}
}
}
我的一些数据在历史数组中没有 processed 状态。我不想在我的数据中包含 null。 FYR:我在 mongodb 图表中这样做。
您可以在 if 语句的条件中使用布尔表达式。
db.collection.aggregate([
{
$project: {
"res": {
"$reduce": {
"input": "$history",
"initialValue": null,
"in": {
"$cond": {
"if": {
$and: [
{
$eq: [
"$$this.status",
"Processed"
]
},
{
$ne: [
"$$this.status",
null
]
}
]
},
"then": "$$this.createdAt",
"else": "$$value"
}
}
}
}
}
}
])