很简单的一个Lookup查询,mybook表为图书shop表,book表为图书详情表,mybook表的book.bookid与book表_id做lookup,但结果未达预期。
mybook表【结构图】:
book表为图书详情表【未上传图】
代码:
db.collection('mybook').aggregate()
.match({
shopid:'2fd465895fa62a2b005bd6df59d4ac0c'
})
.lookup({
from: 'book',
localField: 'book.bookid',
foreignField: '_id',
as: 'value',
})
.end()
查询结果为
[
{
"_id": "2fd465895fac0df9008aa9a57e0f1df4",
"shopid": "2fd465895fa62a2b005bd6df59d4ac0c",
"book": [
{
"bookid": "0fa17ad55f37a67c000ec243277924e3",
"money": "9.9"
},
{
"bookid": "0fa17ad55f37a67c000ec242788e523a",
"money": "6.6"
}
],
"value": [
{
"_id": "0fa17ad55f37a67c000ec242788e523a",
"bookname": "一本好书",
"type": "其他",
"theme": "其他",
},
{
"_id": "0fa17ad55f37a67c000ec243277924e3",
"bookname": "三毛流浪记",
"type": "其他",
"theme": "其他",
}
]
}
]
也就是说book和value的查询结果是分开的。希望能达到以下这种预期查询效果,应如何做?。
[
{
"_id": "2fd465895fac0df9008aa9a57e0f1df4",
"shopid": "2fd465895fa62a2b005bd6df59d4ac0c",
"value": [
{
"_id": "0fa17ad55f37a67c000ec242788e523a",
"money": "9.9" <---- 想把Money合并进来
"bookname": "一本好书",
"type": "其他",
"theme": "其他",
},
{
"_id": "0fa17ad55f37a67c000ec243277924e3",
"bookname": "三毛流浪记",
"money": "6.6" <---- 想把Money合并进来
"type": "其他",
"theme": "其他",
}
]
}
]