从mongoDB获取计数编号

从mongoDB获取计数编号,mongodb,express,mongoose,mongoose-schema,Mongodb,Express,Mongoose,Mongoose Schema,我正在使用mango和express创建问答网站。所以有两种问答模式 我的问答模式是这样的 const questionSchema = mongoose.Schema({ _id : mongoose.Schema.Types.ObjectId, user: { type:mongoose.Schema.Types.ObjectId, ref: 'User', required: true}, title: {type: String , required:true}, question: {

我正在使用mango和express创建问答网站。所以有两种问答模式

我的问答模式是这样的

const questionSchema = mongoose.Schema({
_id : mongoose.Schema.Types.ObjectId,
user: { type:mongoose.Schema.Types.ObjectId, ref: 'User', required: true},
title: {type: String , required:true},
question: {type: String , required:true},
tags: {type: Array , required: true},
time : { type : Date, default: Date.now },
vote: {type: Number, default: 0},
views: {type: Number, default: 0}     });


const answerSchema = mongoose.Schema({
_id : mongoose.Schema.Types.ObjectId,
user: { type:mongoose.Schema.Types.ObjectId, ref: 'User', required: true},
question:{ type:mongoose.Schema.Types.ObjectId, ref: 'Question', required: true},
comment: [{type: mongoose.Schema.Types.ObjectId, ref: 'Comment', default: null }],
answer: {type: String, required: true},
vote: {type: Number , default: 0},
time : { type : Date, default: Date.now }   });

在这里有许多与一个问题相关的答案。我的主页可以预览所有问题。如何获得与每个问题相关的答案数量

由于您的
问题模式
答案
集合没有任何直接关系(例如不存储
答案
参考),请尝试以下操作:

查询:

db.Question.aggregate([
    {
        $lookup:
        {
            from: "Answer",
            localField: "_id",
            foreignField: "question",
            as: "answers"
        }
    }, 
    /** In case if you need all details of question replace 'project' with 'addFields' & remove 'question: 1' */
    { $project: { question: 1, count: { $size: '$answers' } } } 
])

测试:

是否要使用问题名称查询
问题集并获取所有答案计数?是的。我想获取每个问题的问题和答案计数。是否尝试我的答案?是的,但计数始终为0。我认为localField和foreignField名称中的问题与我的模式有关。谢谢@whoami。在我从“Answer”改为“from=”answers之后,这就是工作了。这很有效。