为了账号安全,请及时绑定邮箱和手机立即绑定

mongodb 中什么查询进行过滤,获取嵌套数组上的数据,以及基于嵌套数组的分页

mongodb 中什么查询进行过滤,获取嵌套数组上的数据,以及基于嵌套数组的分页

守着星空守着你 2021-12-02 10:25:26
我在这里有一个问题,我需要过滤,从嵌套数组中获取数据,并根据 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,类名仅为“类一”,然后根据类进行分页。我需要的结果是这样的:result: [{    class: {        name: "class one"    }    school_name: "school one"    status: true}, {    class: {        name: "class one"    }    school_name: "school two"    status: true}]mongoose 中的查询是什么,如果我需要像这样过滤数据并在该模式中给我类似的结果?谢谢你
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

试试这个查询


    db.getCollection('db').aggregate(

    { "$addFields": {

        "class": 

          {

              "$filter": {

                      "input": "$class",

                      "as": "sn",

                      "cond": {

                        "$and": [

                          { "$eq": [ "$$sn.name", "class one" ] },

                     ]

              }

          }

       } 


    }}

    )


查看完整回答
反对 回复 2021-12-02
?
湖上湖

TA贡献2003条经验 获得超2个赞

db.getCollection('db').aggregate([{

    "$unwind":"$class"

    },{

        "$match":{

            "class.name":"class one"

            }

        },{

            "$group":{

                "_id":null,

                "result":{

                    "$push":"$class"

                    }

                }

            },{

                "$project":{

                    "_id":0

                    }

                }])


查看完整回答
反对 回复 2021-12-02
  • 2 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信