从 mongoDB 获取计数
Get count number from mongoDB
我正在使用芒果创建问答网站,express.So有两种问答模式。
我的问答模式是这样的,
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 } });
这里有很多与 question.My 主页相关的答案 获取所有问题 preview.How 以获得与每个问题相关的答案的计数?
因为你的 questionSchema
与 Answers
collection 没有任何直接关系(比如不存储 Answers
引用)那么试试这个:
查询:
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' } } }
])
我正在使用芒果创建问答网站,express.So有两种问答模式。
我的问答模式是这样的,
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 } });
这里有很多与 question.My 主页相关的答案 获取所有问题 preview.How 以获得与每个问题相关的答案的计数?
因为你的 questionSchema
与 Answers
collection 没有任何直接关系(比如不存储 Answers
引用)那么试试这个:
查询:
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' } } }
])