У меня есть следующий код: Монго
db.users.aggregate([
{
$match: {
$and: [
{ UserName: { $eq: 'administrator' } },
{ 'Company.CompanyName': { $eq: 'test' } }
]
}
},
{
$lookup: {
from: "companies",
localField: "CompanyID",
foreignField: "CompanyID",
as: "Company"
}
},
])
$lookup
часть кода работает прекрасно. Я получил следующий результат:
Но если добавить $match
к коду, она не приносит ничего.
Я обнаружил, что проблема заключается во втором матче: { 'Company.CompanyName': { $eq: 'test' } }
, но я не могу понять, что с ним не так. Любые идеи?
UPDATE:
Я также пытался $unwind
на $lookup
результат, но не повезло:
db.users.aggregate([
{
$match: {
$and: [
{ UserName: { $eq: 'administrator' } },
{ 'Company.CompanyName': { $eq: 'edt5' } }
]
}
},
{ unwind: '$Company' },
{
$lookup: {
from: 'companies',
localField: 'CompanyID',
foreignField: 'CompanyID',
as: 'Company'
}
},
])
Две точки: 1: вы можете скопировать в качестве примера записи вы думаете, что должен возвращаться? Ваш скриншот не идеален, потому что данные компании отключены до того, как будет показано поле CompanyName. 2: возникает ли у вас такая же проблема, если вы запускаете только секцию $ match, т. Е. Без поиска $ unwind или $? –
@VinceBowdren 1) Добавлено новое изображение с полным объектом компании.2) $ match с именем пользователя работает только хорошо, но поле компании становится только с поиском, так как я могу проверить его без $ lookup? – AlexBerd
После $ lookup вам нужно будет развернуть 'Company'. Добавить этап $ match на поле компании после $ unwind – Veeram