希望聚合具有最短日期的結果,但最小值應僅適用于狀態為 true 的欄位?
鑒于以下資料, $dateModified 上的 $min 將回傳日期為 2 但我希望回傳 3,因為它是狀態為 true 的最低 dateModified
{name: "one", dateModified: "4", status: true},
{name: "one", dateModified: "2", status: false},
{name: "one", dateModified: "3", status: true}
.aggregate([
$group: {
_id: "$name",
date: {$min: "$dateModified" // where status is true},
total: {$sum: 1}
}
])
我還需要 true 和 false 條目的總數,因此在 group 可能會阻止之前對 status: true 應用 match
uj5u.com熱心網友回復:
為什么不將$match階段添加為僅過濾檔案的第一階段status: true?
db.collection.aggregate([
{
$match: {
status: true
}
},
{
$group: {
_id: "$name",
date: {
$min: "$dateModified"
}
}
}
])
示例 Mongo Playground
由于您熱衷于使用 保留檔案status: false,因此您可以使用$cond和$$REMOVE。
db.collection.aggregate([
{
$group: {
_id: "$name",
date: {
$min: {
$cond: {
if: {
$eq: [
"$status",
true
]
},
then: "$dateModified",
else: "$$REMOVE"
}
}
}
}
}
])
示例 Mongo Playground 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494687.html
上一篇:Mongo聚合$lookup
