【发布时间】:2019-02-25 11:13:34
【问题描述】:
我正在建立一个问答数据库。我有三个模式,用户、问题和回复(答案)。我的问题从我想查询用户尚未回答的问题开始。但是当我运行这个查询时,我得到一个空回复数组的问题。我应该以某种方式填充它吗?这是我得到的:
查询:
let getQuestions = (req, res)=>{
Question.aggregate([
{
$match: {isGlobal: true}
},
{
$lookup: {
from: 'Reply',
localField: '_id',
foreignField: 'questionID',
as: 'replies'
}
},
// {
// $match: {}
// }
]).then(foundQuestions=> console.log(foundQuestions))
};
用户架构(简化):
const mongoose = require('mongoose');
const userSchema = mongoose.Schema({
firstName: String,
lastName: String,
email: String,
questionReplies: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Reply'
}
],
}, {timestamps: true});
module.exports = mongoose.model('User', userSchema);
问题架构:
const mongoose = require('mongoose');
const questionSchema = mongoose.Schema({
title: String,
description: String,
isGlobal: Boolean,
options: [
{
number: Number,
title: String,
}
]
}, {timestamps: true});
module.exports = mongoose.model('Question', questionSchema);
回复架构:
const mongoose = require('mongoose');
const replySchema = mongoose.Schema({
questionID: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Question',
required: true
},
email: {type: String, required: true},
answerID: {type: String, required: true},
number: Number,
title: String,
}, {timestamps: true});
module.exports = mongoose.model('Reply', replySchema);
我的回复集合里面有这个文档:
"questionID" : ObjectId("5c6f6867cbff9c2a9004eb6d")
我对此 ID 有疑问:
"_id" : ObjectId("5c6f6867cbff9c2a9004eb6d"),
(也欢迎任何关于改进数据库设计的意见)。
【问题讨论】: