在Mongodb上使用查找
我有三个收藏: 故事: 章节: 图像: 我需要这个结果:在Mongodb上使用查找,mongodb,lookup,projection,Mongodb,Lookup,Projection,我有三个收藏: 故事: 章节: 图像: 我需要这个结果: { "idStory": "story-5ac97232b2ea82701e853d0b", "chapters": [ { "idChapter": "chapter-5ac97274b2ea82701e853d11" } { "idChapter": "chapter-5ac97593c9c35a7079f85f8c" "images":
{
"idStory": "story-5ac97232b2ea82701e853d0b",
"chapters": [
{ "idChapter": "chapter-5ac97274b2ea82701e853d11" }
{
"idChapter": "chapter-5ac97593c9c35a7079f85f8c"
"images": [
{ "URI": "http://mypath1" },
{ "URI": "http://mypath2" }
]
}
]
}
我尝试过以下几个阶段:
查找
故事李>
$lookup
有关章节:
$unwind
章节:
$lookup
有关图像:
$project
:
'$project': {
'idStory': true,
'chapters': {
'idChapter': '$chapters.idChapter',
'images': {
'URI': '$images.URI'
}
}
}
任何帮助都将不胜感激。
'localField':“$chapters'
甚至无效,更不用说不是正确的路径了。你会得到更多的帮助,这基本上意味着“给人们足够的数据来产生你期望的结果”。因此,如果你想显示一个包含多个章节的结果,那么请提供该数据以及与之相关的所有内容。查看一下@NeilLunn的可能重复项抱歉,我已经更正了错误,但无论如何,这绝对是我的真实数据。我不怀疑它是“真实的”,只是示例缺少数据。故事有两章,你提供“一章”。提供的章节有两个图像,您再次只提供“一个”。请包括与原始“故事”相关的其他数据。这使得这个问题“可再现”并且顾名思义是“可解决的”。
[
{
"idImage": "image-5ac97593c9c35a7079f85f8c",
"URI": "http://mypath1"
"dateCreation": "12/12/1973"
},
{
"idImage": "image-5ac9f63f8bfb1b7b5bced68e",
"URI": "http://mypath2"
"dateCreation": "12/12/1973"
}
]
{
"idStory": "story-5ac97232b2ea82701e853d0b",
"chapters": [
{ "idChapter": "chapter-5ac97274b2ea82701e853d11" }
{
"idChapter": "chapter-5ac97593c9c35a7079f85f8c"
"images": [
{ "URI": "http://mypath1" },
{ "URI": "http://mypath2" }
]
}
]
}
'$lookup': {
'from': 'chapters',
'localField': 'idChapter',
'foreignField': 'idChapter',
'as': 'chapters'
}
'$unwind': '$chapters'
'$lookup': {
'from': 'images',
'localField': 'chapters.idImage',
'foreignField': 'idImage',
'as': 'images'
}
'$project': {
'idStory': true,
'chapters': {
'idChapter': '$chapters.idChapter',
'images': {
'URI': '$images.URI'
}
}
}