mongodb中的查询用于过滤、获取嵌套数组上的数据以及基于嵌套数组的分页



我这里有一个问题,我需要过滤,从嵌套数组中获取数据,并在mongodb数据中基于嵌套数组(带数组的子属性(对数据进行分页

我的数据是像这个一样的嵌入文档

school: [{
_id: "5d9eb788536e7a17b8032469"
name: "school one"
status: true
class: [{
name: "class one"
}, {
name: "class two"
}]
}, {
_id: "5d7b570c135dc32bb40d8943"
name: "school two"
Status: true
class: [{
name: "class one"
}, {
name: "class three"
}
}]

我想按状态过滤:true,类名仅为"classone",然后根据类进行分页。我需要的结果是这样的:

result: [{
class: {
name: "class one"
}
school_name: "school one"
status: true
}, {
class: {
name: "class one"
}
school_name: "school two"
status: true
}]

如果我需要像那样过滤数据,并在那个模式中给我像a一样的结果,那么mongose中的查询是什么?谢谢

db.getCollection('db').aggregate([{
"$unwind":"$class"
},{
"$match":{
"class.name":"class one"
}
},{
"$group":{
"_id":null,
"result":{
"$push":"$class"
}
}
},{
"$project":{
"_id":0
}
}])

尝试此查询

db.getCollection('db').aggregate(
{ "$addFields": {
"class": 
{
"$filter": {
"input": "$class",
"as": "sn",
"cond": {
"$and": [
{ "$eq": [ "$$sn.name", "class one" ] },
]
}
}
} 
}}
)

最新更新