Что запросить в mongodb для фильтра, получить данные о вложенном массиве и разбить на страницы на основе вложенного массива - PullRequest
0 голосов
/ 24 октября 2019

У меня проблема здесь, мне нужно отфильтровать, получить данные из вложенного массива и разбить на страницы данные на основе вложенного массива (дочернее свойство с массивом) в данных 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 ]

0 голосов
/ 24 октября 2019

Попробуйте этот запрос

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

    }}
    )
0 голосов
/ 24 октября 2019
db.getCollection('db').aggregate([{
    "$unwind":"$class"
    },{
        "$match":{
            "class.name":"class one"
            }
        },{
            "$group":{
                "_id":null,
                "result":{
                    "$push":"$class"
                    }
                }
            },{
                "$project":{
                    "_id":0
                    }
                }])
...