Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb中的查询用于筛选、获取嵌套数组上的数据以及基于嵌套数组的分页_Javascript_Mongodb_Mongoose_Graphql_Apollo Server - Fatal编程技术网

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

Javascript mongodb中的查询用于筛选、获取嵌套数组上的数据以及基于嵌套数组的分页,javascript,mongodb,mongoose,graphql,apollo-server,Javascript,Mongodb,Mongoose,Graphql,Apollo Server,这里有一个问题,我需要过滤,从嵌套数组中获取数据,并根据mongodb数据中的嵌套数组(带有数组的子属性)对数据进行分页 我的数据是这样嵌入的文档 school: [{ _id: "5d9eb788536e7a17b8032469" name: "school one" status: true class: [{ name: "class one" }, { name: "class two" }] },

这里有一个问题,我需要过滤,从嵌套数组中获取数据,并根据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,类名仅为“class one”,然后根据类进行分页。我需要的结果如下:

result: [{
    class: {
        name: "class one"
    }
    school_name: "school one"
    status: true
}, {
    class: {
        name: "class one"
    }
    school_name: "school two"
    status: true
}]
mongoose中的查询是什么,如果我需要像这样过滤数据并在该模式中给我类似的结果?谢谢

尝试此查询

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" ] },
                     ]
              }
          }
       } 

    }}
    )