假设我有这个架构:
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()方法,因为它已被弃用。
谢谢
答案 0 :(得分:2)
您可以使用$ group来查找注释总数,如下所示:
db.collection.aggregate([
{
$group: {
_id: null,
count : { $sum: { $size: "$comments"}}
}
}
])