在猫鼬中查询子文档的子文档
Querying a sub document of a sub document in mongoose
在我的 parent 里面,我有很多 child,其中一个 child 还有很多子 child,我需要 return 来自特定 child.
的子 child
exports.test = (req, res) => {
Forum.find({title: req.params.id}).then(record => {
console.log(record);
})
};
此处的代码 return 在我插入新闻和公告 url 参数时如下所示,这是正确的:
_id: 5e7bf52ebb5b2b09fb46e29f,
title: 'News & Announcements',
property: 'ACP',
position: 1,
visible: true,
topics: [ [Object], [Object], [Object] ],
__v: 5 } ]
然后我想访问主题和 return 特定主题 - 像我上面那样通过 name/title 找到它,我该怎么做?
如果这个主题字段是一个object的数组,每个object包含名称和标题,那么你可以搜索你想要的主题,只需将其添加到object 你传递给查找查询
例如,如果您需要查询名称为 'My Topic' 的某个主题,则查询应为
Forum.find({ title: req.params.id, 'topics.name': 'My Topic' })
这将缩小查询结果的范围,但如果同一论坛中有一些其他名称不同的主题,它们将在查询中与您一起出现
例如,如果某个论坛有以下信息:
{
_id: ObjectId("5e7bf52ebb5b2b09fb46e29f"),
title: 'News & Announcements',
property: 'ACP',
position: 1,
visible: true,
topics: [
{
name: 'Topic 1',
title: 'Title 1'
}, {
name: 'Topic 2',
title: 'Title 2'
}, {
name: 'My Topic',
title: 'My Title'
}
],
}
并且您仅在此论坛中搜索主题 'My Topic',所有主题数组都将从查询中 return 编辑,因为搜索是按文档进行的
所以你必须在完成查询后做一些 javaScript 技巧才能只获得具有你想要的名称的主题
var myTopic = record.ropics.filter(topic => topic.name === 'My Topic'}
这将 return 您想要的主题
在我的 parent 里面,我有很多 child,其中一个 child 还有很多子 child,我需要 return 来自特定 child.
的子 childexports.test = (req, res) => {
Forum.find({title: req.params.id}).then(record => {
console.log(record);
})
};
此处的代码 return 在我插入新闻和公告 url 参数时如下所示,这是正确的:
_id: 5e7bf52ebb5b2b09fb46e29f,
title: 'News & Announcements',
property: 'ACP',
position: 1,
visible: true,
topics: [ [Object], [Object], [Object] ],
__v: 5 } ]
然后我想访问主题和 return 特定主题 - 像我上面那样通过 name/title 找到它,我该怎么做?
如果这个主题字段是一个object的数组,每个object包含名称和标题,那么你可以搜索你想要的主题,只需将其添加到object 你传递给查找查询
例如,如果您需要查询名称为 'My Topic' 的某个主题,则查询应为
Forum.find({ title: req.params.id, 'topics.name': 'My Topic' })
这将缩小查询结果的范围,但如果同一论坛中有一些其他名称不同的主题,它们将在查询中与您一起出现
例如,如果某个论坛有以下信息:
{
_id: ObjectId("5e7bf52ebb5b2b09fb46e29f"),
title: 'News & Announcements',
property: 'ACP',
position: 1,
visible: true,
topics: [
{
name: 'Topic 1',
title: 'Title 1'
}, {
name: 'Topic 2',
title: 'Title 2'
}, {
name: 'My Topic',
title: 'My Title'
}
],
}
并且您仅在此论坛中搜索主题 'My Topic',所有主题数组都将从查询中 return 编辑,因为搜索是按文档进行的
所以你必须在完成查询后做一些 javaScript 技巧才能只获得具有你想要的名称的主题
var myTopic = record.ropics.filter(topic => topic.name === 'My Topic'}
这将 return 您想要的主题