我如何获得帖子内所有评论的总长度(计数)?

时间:2019-04-13 12:10:57

标签: mongodb express mongoose

假设我有这个架构:

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个帖子保存到数据库中。如何获得他们所有评论的总长度(计数)?

这仅适用于Post的整个集合。返回10。

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

我不希望使用.count()方法,因为它已被弃用。

谢谢

1 个答案:

答案 0 :(得分:2)

您可以使用$ group来查找注释总数,如下所示:

db.collection.aggregate([
    {
        $group: {
            _id: null,
            count : { $sum: { $size: "$comments"}}
        }
    }
])