我创建了2个模型,即用户、文章.它们的数据 struct 如下;
const userSchema = Schema({
name: String,
email: String,
password: String
});
const User = mongoose.model(‘user’, userSchema);
module.exports = User;
——
const articleSchema = Schema({
liked: Array, // liked contains users’ _id who like this article
content: String
})
const Article = mongoose.model(‘article’, articleSchema);
module.exports = Article
——
我想得到的所有文章的页面大小为10,每篇文章填充了一些用户的信息谁喜欢这篇文章.
例如,假设用户表和文章表的数据如下:
users = [
{
_id: 1,
name: ‘a’,
email: ‘a.com’,
password: ‘a’
},
{
_id: 2,
name: ‘b’,
email: ‘b.com’,
password: ‘b’
}
]
articles = [
{
_id: 1,
liked: [1,2],
content: “a&b”
},
{
_id: 2,
liked: [1],
content: “a”
}
]
预期的结果是:
articles = [
{
_id: 1,
liked: [
{
_id: 1,
name: ‘a’,
email: ‘a.com’,
password: ‘a’
},
{
_id: 2,
name: ‘b’,
email: ‘b.com’,
password: ‘b’
}
],
content: “a&b”
},
{
_id: 2,
liked: [
{
_id: 1,
name: ‘a’,
email: ‘a.com’,
password: ‘a’
}
],
content: “a”
}
]
我试着用Model.find(query)
和Model.aggregate(pipeline)
来解决这个问题,但这两种方法各有优缺点,都达不到好的结果.请给我一个建议.