我有3个模式:
第一个
我想执行一个查询,返回如下内容:
{
"_id": "id",
"username": "username",
"password": "password",
"tasks": [
"_id": "id",
"title": "title",
"deadline": "deadline",
"finished": false,
"subtasks": [
{
"_id": "id",
"title": "title",
"deadline": "deadline",
"finished": false
}
]
]
}
据我所知,聚合应该能做到这一点,但我不太清楚如何用它来处理嵌套数组。我知道关系数据库更适合这一点,但这是我目前所处的情况。任何帮助都是感激不尽的!
3条答案
按热度按时间jjjwad0x1#
您可能不需要聚合,因为您的用户模式已经将任务作为一个数组包含在其中,因此您可以通过mongoose对用户记录调用“populate”。
xjreopfe2#
在
userSchema
中,将ref: 'task'
或您命名任何内容添加到task model
中,以将其指向您的任务集合。与
taskSchema
相同,在子任务集合中添加ref: 'subtask'
或其他名称。这样你就可以使用
populate
函数而不是aggregate
在这种情况下,由于
subtask
是task
中一个字段,因此我们具有嵌套填充5jdjgkvh3#
我按照建议使用了populate方法