【发布时间】:2017-08-21 19:12:42
【问题描述】:
我想通过在 MongoDB 上使用 $lookup 和 $match 来获取带有外键的文档。
有一个“Jobs”集合存储 Job 文档。在 Job 文档中有两个字段用作外键“creatorParent”和“Children”。 CreatorParent 是“Users”集合的外键,Children 数组包含用户孩子的 id。
当我列出整个作业时,我想从“用户”集合中检索 CreatorParent ID 和 ChildrenID 的详细信息。我想用 ParentDetail 和 ChildDetail 编组“作业”文档。我不想为此编写自定义方法。是否可以用 MongoDB 查询来处理?
顺便说一句,我是 MongoDB 的初学者,所以应该在 Children 和 CreatorParent 上存储所需的详细信息,而不是存储 ObjectId?
用户文档:
{
"_id" : ObjectId("58daf84877733645eaa9b44f"),
"email" : "meto93@gmail.com",
"password" : "vpGl+Fjnef616cRgNbCkwaFDpSI=",
"passwordsalt" : "99397F4A9D3A499D96694547667E74595CE994D2E83345D6953EF866303E8B65",
"children" : [
{
"_id" : ObjectId("58daf84977733645eaa9b450"),
"name" : "Mert",
"age" : 5,
"additionalinformation" : "ilk cocuk",
"creationtime" : ISODate("2017-03-28T23:56:56.952Z"),
"userid" : ObjectId("58daf84877733645eaa9b44f"),
"gender" : null
},
{
"_id" : ObjectId("58daf84977733645eaa9b451"),
"name" : "Sencer",
"age" : 7,
"additionalinformation" : "ikinci cocuk",
"creationtime" : ISODate("2017-03-28T23:56:56.952Z"),
"userid" : ObjectId("58daf84877733645eaa9b44f"),
"gender" : null
}
]
}
工作
{
"_id" : ObjectId("58db0a2d77733645eaa9b453"),
"creationtime" : ISODate("2017-03-29T01:13:17.509Z"),
"startingtime" : ISODate("2017-04-03T13:00:00.000Z"),
"endingtime" : ISODate("2017-04-03T17:00:00.000Z"),
"children" : [
ObjectId("58daf84977733645eaa9b450"),
ObjectId("58daf84977733645eaa9b451")
],
"creatorparent" : ObjectId("58daf84877733645eaa9b44f"),
"applicants" : []
}
【问题讨论】: