【发布时间】:2020-12-01 03:59:26
【问题描述】:
我有 3 个收藏
- 图书 - 包含图书的详细信息
- 库 - 包含有关库的详细信息
- Book_Library - 每个条目都有一个 book id、library id 和一个唯一的 id book id_library id。
我知道以前有人问过这个问题,但我似乎找不到适合我的情况的解决方案。
我正在尝试从 book 中投影一个字段,从 library 中投影另一个字段,它们没有直接关系,但每个都与 book_library 有关系。然后从图书馆中按月计算类型的数量。
这是每个文档的外观。 买书
{
"_id" : "isbn-22553564",
"title" : "Boerworse is baie Lekker",
"genre" : "Sci-Fi"
}
图书馆
"_id" : "postcode-10927886",
"postcode" : "10927886",
"dateLoaded" : "2020-08-12"
"town" : "Wonderland"
}
对于 book_library,它包含书籍和图书馆的 ID,其中链接源和链接目标作为此集合中的字段
{
"_id" : "isbn-22553564_postcode-10927886",
"lnkSrc" : "isbn-22553564",
"lnkDst" : "postcode-10927886"
}
我想要实现的是获取流派和 dateLoaded,这样我就可以计算每年每月以接近的形式加载的“科幻”和“纪录片”书籍的数量
按月和年组合计算每个流派
{
genre: "Sci-Fi"
period: "08-2020"
count: 20
}
{
genre: "Documentary"
period: "09-2020"
count: 2
}
我尝试使用 2 $lookup with unwind 如下
db.getCollection('book').aggregate([
{
$lookup:{
localField: '_id',
from: 'book_library',
foreignField: '_id',
as: 'table1'
}},
{
$unwind: '$table1'
},
{
$lookup:{
localField: 'lnkSrc',
from: 'library',
foreignField: '_id',
as: 'table2'
}
}
])
但在结果搜索中,即使我切换了哪个集合先出现,我也只会在 table2 上收到一个空数组
table2 : []
如何确保第二个表格显示结果? 我错过了什么?
【问题讨论】:
标签: mongodb