получать совпавшие посты определенной категории через агрегацию mongoDB - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть две коллекции. категории и сообщений , если мы добавим сообщение, связанное с любыми категориями (мы можем добавить несколько категорий к одному сообщению)

Вот пример json Я пытаясь добиться в результате:

{
    "data": [
        {
            "title": "Games",
            "data": [
                {
                    "_id": "5e954c92fbc0f41dd41fd5c0",
                    "subscription_type": "Free",
                    "post_category": [
                        "5e858166a7816d1c393ce198",
                        "5e85817ea7816d1c393ce199"
                    ],
                    "status": true,
                    "created_at": "2020-04-14T05:39:29.979Z",
                    "title": "cricket",
                    "user_id": "5e54f8358a27905a2ebc49e0",
                    "content_type": "c1",
                    "description": "desc",
                    "thumbnail": "de5C2igSNR42769979"
                }
            ]
        },
        {
            "title": "Movies",
            "data": [
                {
                    "_id": "5e954c92fbc0f41dd41fd5c0",
                    "subscription_type": "Free",
                    "post_category": [
                        "5e858166a7816d1c393ce198",
                        "5e85817ea7816d1c393ce199"
                    ],
                    "status": true,
                    "created_at": "2020-04-14T05:39:29.979Z",
                    "title": "moviename",
                    "user_id": "5e54f8358a27905a2ebc49e0",
                    "content_type": "c1",
                    "description": "desc",
                    "thumbnail": "de5C2igSNR42769979",
                    "postUrl": "yMv1Y4so7h42769979",
                    "__v": 0
                }
            ]
        }
    ]

из каждой категории мне нужно 10 сообщений, которые являются самыми последними. Есть ли способ добиться желаемого результата? // =========================================== Я пробовал это, но не смог получить вывод?

{
                '$lookup': {
                    'from': 'posts',
                    'pipeline': [
                        { '$match': {'status': true ,'content_type':'c1'}
                     }],
                    'as': 'postinfo'
                }
            } 
             {'$unwind': '$postinfo'},
             {
                '$sort': {'created_at': -1}
             }

            {
                '$group': {
                    "_id":'$post_category', 
                    "name": { "$first": "$name" },
                    "archives": {
                        "$push": "$$ROOT"
                    }
                }
              } 
...