当foreignField为_id时,MongoDb聚合查找不会产生结果。我有两个集合说users
和discussions
样本users
数据:
[{
_id: 5f9c50dcfac1f091400225e3,
email: '[email protected]',
details: { fname: 'Peter Test', lname: 'Fulton' },
},
{
_id: 5fa432bfb91fab7db60c70eb,
email: '[email protected]',
details: { fname: 'Frodo', lname: 'Baggins' },
},
{
_id: 5fa8ec7d3ce22610e5d15190,
email: '[email protected]',
details: { fname: 'Tommy', lname: 'test' },
},
{
_id: 5fc38bb0b3683651be970180,
email: '[email protected]',
},
{
_id: 5fd2340cc443d155ab38383b,
email: '[email protected]',
details: { fname: 'Dexter', lname: 'Lab' },
}]
样本discussions
数据:
{_id: ObjectId("5fb2abd6b14fa5683979df58"),
tags: [ 'javascritp', 'css', 'html' ],
title: 'Why is this inline-block element pushed downward?',
post: 'Test Post',
learnerId: ObjectId("5f9c50dcfac1f091400225e3"),
}
“ _id
”的此处users
与“ learnerId
”的“ discussions
”链接。
我的汇总查询如下。
db.users.aggregate([
{ $project: { "details.fname": 1, "details.lname":1,email:1, _id:1}},
{$lookup: {
from: "discussions",
localField: "learnerId",
foreignField: "_id",
as: "discussions"
}}
])
此处'Peter Test'
的_id5f9c50dcfac1f091400225e3
与链接discussions LeanerId
。但是我希望讨论会充实我的结果。我在所有用户集合中看到空的讨论数组。
[{
_id: 5f9c50dcfac1f091400225e3,
email: '[email protected]',
details: { fname: 'Peter Test', lname: 'Fulton' },
discussions: []
},
{
_id: 5fa432bfb91fab7db60c70eb,
email: '[email protected]',
details: { fname: 'Frodo', lname: 'Baggins' },
discussions: []
},
{
_id: 5fa8ec7d3ce22610e5d15190,
email: '[email protected]',
details: { fname: 'Tommy', lname: 'test' },
discussions: []
},
{
_id: 5fc38bb0b3683651be970180,
email: '[email protected]',
discussions: []
},
{
_id: 5fd2340cc443d155ab38383b,
email: '[email protected]',
details: { fname: 'Dexter', lname: 'Lab' },
discussions: []
}]
您能指出我的汇总查询中的错误吗?
您不匹配localField和foreignField
db.users.aggregate([
{
$project: {
"details.fname": 1,
"details.lname": 1,
email: 1,
_id: 1
}
},
{
$lookup: {
from: "discussions",
localField: "_id",
foreignField: "learnerId",
as: "discussions"
}
}
])
工作蒙戈游乐场
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句