{
"_id": 1,
"title": {
header1:{ "name":"A" , age:10, "active":true},
header2:{ "name":"B" , age:15, "active":false},
header3:{ "name":"C" , age:20, "active":true},
header4:{ "name":"D" , age:30, "active":true},
header5:{ "name":"E" , age:35, "active":false},
header6:{ "name":"F" , age:40, "active":true},
header7:{ "name":"G" , age:45, "active":false},
}
}
如何僅顯示活動值為 false 的標題?
uj5u.com熱心網友回復:
$project1.1 通過
$objectToArrayforheadersfield將鍵值對轉換為陣列。1.2$filter用$$this.v.active這是false。$project2.1 轉換
headers為鍵值對通過$arrayToObject并分配給title欄位。
db.collection.aggregate([
{
$project: {
_id: 1,
headers: {
$filter: {
"input": {
$objectToArray: "$title"
},
"cond": {
"$eq": [
"$$this.v.active",
false
]
}
}
}
}
},
{
$project: {
_id: 1,
title: {
"$arrayToObject": "$headers"
}
}
}
])
示例 Mongo Playground
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/389730.html
