亲爱的,我是MongoDB的新手,我无法解决这个问题。
我认为很简单,但是,超出我=( 如果有人可以帮助我,我真的非常感谢你:)。
假设我需要对一个我仍然不知道名字的集合进行$ lookup。我收藏了很多!这个例子可以给出一个ideia:
**Collection Books** {id, name, year, editor, *source*};
**Collection Category** {category_name, collection_name, *source*};
**Collection Cat_Romance** {*source*, main_guy, main_girl, theme, ...};
**Collection Cat_Thriller** {*source*, enigma, thriller, ...};
**Collection Cat_Adventure**;
**Collection Cat_Magic**, ....;
如您所见, category 集合中的每个文档都会显示不同的信息。
问题是,我正在创建一个收到类别名称的系统,我需要回来,这本书的主要信息,以及他分别收集的所有信息。像下面的代码:
db.books.aggregate([
{ $lookup : {
from : "category",
localField : "source",
foreignField : "source",
as : "category" }},
{ $unwind : "$category"},
{ $match : { 'category.category_name' : */romance/*}}
{ $project: { cat : '$category.collection_name'}},
{ $lookup : {
from : "$$cat",
localField : "source",
foreignField : "source",
as : "category_infos" }},
])
在这个例子中,我想要那些属于浪漫类的书 如上面查询中所述,我使用字段 source 来聚合集合,并将我想要的集合名称存储到变量 cat 中。这个变量我想用到第二个$ lookup来聚合正确的集合。
假设我收到条目:浪漫,代码应返回如下内容:
{
"_id" : ObjectID("XXXXX"),
"name": "XXXX",
"year": "XXXX",
"editor": "XXXX",
"category_infos" : {
*source*: "YYY",
main_guy: "YYY",
main_girl: "YYY",
theme: "YYY",
....
}
}
嗯,我认为这个问题已得到解释。如果有人能给我一个亮点,我真的很感激。我与之斗争已经过了几个小时=( 如果代码不是enoght或格式错误,请告诉我。
我感谢先进的任何人看一看并尝试帮助=)