Как я могу получить общую длину (количество) всех комментариев внутри поста? - PullRequest
1 голос
/ 13 апреля 2019

Допустим, у меня есть эта схема:

const PostSchema = new Schema({
    user: {
        type: Schema.Types.ObjectId,
        ref: 'users'
    },
    text: {
        type: String,
        required: true 
    },
    comments: [
        {
            user: {
                type: Schema.Types.ObjectId,
                ref: 'users'
            },
            text: {
                type: String,
                required: true
            },
            date: {
                type: Date,
                default: Date.now
            }
        }
    ],
    date: {
        type: Date,
        default: Date.now
    }
});

И, скажем, я сохранил 10 сообщений в базе данных.Как я могу получить общую длину (количество) всех комментариев, которые у них есть?

Это работает только для всей коллекции сообщений.Он возвращает 10.

router.get( '/total', ( req, res ) => {
    Post.estimatedDocumentCount().then( ( totalCount) => {
        res.json( totalCount );
    }).catch( ( err ) => {
        console.log( err );
    });
});

Я не хочу использовать метод .count (), поскольку он устарел.

Спасибо

1 Ответ

2 голосов
/ 13 апреля 2019

Вы можете использовать $ group и найти общее количество комментариев, как показано ниже:

db.collection.aggregate([
    {
        $group: {
            _id: null,
            count : { $sum: { $size: "$comments"}}
        }
    }
])  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...