Reputation: 329
I'm trying to make an aggregate pipeline where I know that the last match won't find a result, but I still want to get what I got until there. Do y'all know how I can get this?
The aggregation query is:
var pipeline = [
{
$match:{
Cod: '5'
}
},
{
$unwind: '$Orgaos'
},
{
$match:{
'Orgaos.Siglas': 'PR'
}
},
{
$lookup:{
'from': 'Varas',
'localField': 'Orgaos.Varas',
'foreignField': '_id',
'as': 'Varas'
}
},
{
$unwind: '$Varas'
},
{
$match:{
'Varas.CodVara': '9001'
}
}
]
db.getCollection('Tribunais').aggregate(pipeline)
The result if $match find anything is like:
{
"_id" : ObjectId("5c335bdd20681573e41878ad"),
"Nome" : "TRT",
"Cod" : "5",
"Orgaos" : {
"Orgao" : "09",
"Siglas" : [
"PR"
],
"Varas" : [ ]
},
"Varas" : {
"_id" : ObjectId("5cf55fc2cb865b5038310e0c"),
"CodVara" : "0001",
"NomeVara" : "01ª VARA DO TRABALHO DE CURITIBA",
"Comarca" : "CURITIBA",
"Uf" : "PR"
}
}
And if it doesn't find anything I expect to get something like:
{
"_id" : ObjectId("5c335bdd20681573e41878ad"),
"Nome" : "TRT",
"Cod" : "5",
"Orgaos" : {
"Orgao" : "09",
"Siglas" : [
"PR"
],
"Varas" : [ ]
},
"Varas" : { }
}
Or like:
{
"_id" : ObjectId("5c335bdd20681573e41878ad"),
"Nome" : "TRT",
"Cod" : "5",
"Orgaos" : {
"Orgao" : "09",
"Siglas" : [
"PR"
],
"Varas" : [ ]
},
"Varas" : Null
}
tks
EDIT
{
"_id" : ObjectId("5c335bdd20681573e41878ad"),
"Nome" : "TRT",
"Cod" : "5",
"Orgaos" : [
{
"Orgao" : "23",
"Siglas" : [
"MT"
],
"Varas" : [
ObjectId("5cf55fc5cb865b503831104e"),
ObjectId("5cf55fc5cb865b503831104f"),
ObjectId("5cf55fc5cb865b5038311050"),
ObjectId("5cf55fc5cb865b5038311051"),
ObjectId("5cf55fc5cb865b5038311052"),
ObjectId("5cf55fc5cb865b5038311053"),
ObjectId("5cf55fc5cb865b5038311054"),
ObjectId("5cf55fc5cb865b5038311055"),
ObjectId("5cf55fc5cb865b5038311056"),
ObjectId("5cf55fc5cb865b5038311057"),
ObjectId("5cf55fc5cb865b5038311058"),
ObjectId("5cf55fc5cb865b5038311059"),
ObjectId("5cf55fc5cb865b503831105a"),
ObjectId("5cf55fc5cb865b503831105b"),
ObjectId("5cf55fc5cb865b503831105c"),
ObjectId("5cf55fc5cb865b503831105d"),
ObjectId("5cf55fc5cb865b503831105e"),
ObjectId("5cf55fc5cb865b503831105f"),
ObjectId("5cf55fc5cb865b5038311060"),
ObjectId("5cf55fc5cb865b5038311061"),
ObjectId("5cf55fc5cb865b5038311062"),
ObjectId("5cf55fc5cb865b5038311063"),
ObjectId("5cf55fc5cb865b5038311064"),
ObjectId("5cf55fc5cb865b5038311065"),
ObjectId("5cf55fc5cb865b5038311066"),
ObjectId("5cf55fc5cb865b5038311067")
]
},
{
"Orgao" : "24",
"Siglas" : [
"MS"
],
"Varas" : [
ObjectId("5cf55fc5cb865b5038311068"),
ObjectId("5cf55fc5cb865b5038311069"),
ObjectId("5cf55fc5cb865b503831106a"),
ObjectId("5cf55fc5cb865b503831106b"),
ObjectId("5cf55fc5cb865b503831106c"),
ObjectId("5cf55fc5cb865b503831106d"),
ObjectId("5cf55fc5cb865b503831106e"),
ObjectId("5cf55fc5cb865b503831106f"),
ObjectId("5cf55fc5cb865b5038311070"),
ObjectId("5cf55fc5cb865b5038311071"),
ObjectId("5cf55fc5cb865b5038311072"),
ObjectId("5cf55fc5cb865b5038311073"),
ObjectId("5cf55fc5cb865b5038311074"),
ObjectId("5cf55fc5cb865b5038311075"),
ObjectId("5cf55fc5cb865b5038311076"),
ObjectId("5cf55fc5cb865b5038311077"),
ObjectId("5cf55fc5cb865b5038311078"),
ObjectId("5cf55fc5cb865b5038311079"),
ObjectId("5cf55fc5cb865b503831107a"),
ObjectId("5cf55fc5cb865b503831107b"),
ObjectId("5cf55fc5cb865b503831107c"),
ObjectId("5cf55fc5cb865b503831107d"),
ObjectId("5cf55fc5cb865b503831107e"),
ObjectId("5cf55fc5cb865b503831107f"),
ObjectId("5cf55fc5cb865b5038311080"),
ObjectId("5cf55fc5cb865b5038311081")
]
}
]
}
{
"_id" : ObjectId("5cf55fc5cb865b503831104e"),
"CodVara" : "0001",
"NomeVara" : "1ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831104f"),
"CodVara" : "0002",
"NomeVara" : "2ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311050"),
"CodVara" : "0003",
"NomeVara" : "3ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311051"),
"CodVara" : "0004",
"NomeVara" : "4ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311052"),
"CodVara" : "0005",
"NomeVara" : " 5ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311053"),
"CodVara" : "0006",
"NomeVara" : "6ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311054"),
"CodVara" : "0007",
"NomeVara" : "7ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311055"),
"CodVara" : "0008",
"NomeVara" : "8ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311056"),
"CodVara" : "0009",
"NomeVara" : " 9ª Vara do Trabalho de Cuiabá",
"Comarca" : "Cuiabá",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311057"),
"CodVara" : "0021",
"NomeVara" : " 1ª Vara do Trabalho de Rondonópolis",
"Comarca" : "Rondonópolis",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311058"),
"CodVara" : "0022",
"NomeVara" : "2ª Vara do Trabalho de Rondonópolis",
"Comarca" : "Rondonópolis",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311059"),
"CodVara" : "0026",
"NomeVara" : "Vara do Trabalho de Barra do Garças",
"Comarca" : "Barra do Garças",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831105a"),
"CodVara" : "0031",
"NomeVara" : "Vara do Trabalho de Cáceres",
"Comarca" : "Cáceres",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831105b"),
"CodVara" : "0036",
"NomeVara" : "Vara do Trabalho de Sinop",
"Comarca" : "Sinop",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831105c"),
"CodVara" : "0041",
"NomeVara" : "Vara do Trabalho de Colíder",
"Comarca" : "Colíder",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831105d"),
"CodVara" : "0046",
"NomeVara" : "Vara do Trabalho de Alta Floresta",
"Comarca" : "Alta Floresta",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831105e"),
"CodVara" : "0051",
"NomeVara" : "Vara do Trabalho de Tangará da Serra",
"Comarca" : "Tangará da Serra",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831105f"),
"CodVara" : "0056",
"NomeVara" : "Vara do Trabalho de Diamantino",
"Comarca" : "Diamantino",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311060"),
"CodVara" : "0061",
"NomeVara" : "Vara do Trabalho de São Félix do Araguaia",
"Comarca" : "São Félix do Araguaia",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311061"),
"CodVara" : "0066",
"NomeVara" : "Vara do Trabalho de Sorriso",
"Comarca" : "Sorriso",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311062"),
"CodVara" : "0071",
"NomeVara" : "Vara do Trabalho de Jaciara",
"Comarca" : "Jaciara",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311063"),
"CodVara" : "0076",
"NomeVara" : " Vara do Trabalho de Primavera do Leste",
"Comarca" : "Primavera do Leste",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311064"),
"CodVara" : "0081",
"NomeVara" : "Vara do Trabalho de Juína",
"Comarca" : "Juína",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311065"),
"CodVara" : "0086",
"NomeVara" : "Vara do Trabalho de Água Boa",
"Comarca" : "Água Boa",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311066"),
"CodVara" : "0091",
"NomeVara" : "Vara do Trabalho de Mirassol D'Oeste",
"Comarca" : "Mirassol D'Oeste",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311067"),
"CodVara" : "0096",
"NomeVara" : "Vara do Trabalho de Pontes e Lacerda",
"Comarca" : "Pontes e Lacerda",
"Uf" : "MT"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311068"),
"CodVara" : "0001",
"NomeVara" : "1ª vara do trabalho de campo grande",
"Comarca" : "Campo Grande",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311069"),
"CodVara" : "0002",
"NomeVara" : "2ª vara do trabalho de campo grande",
"Comarca" : "Campo Grande",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831106a"),
"CodVara" : "0003",
"NomeVara" : "3ª vara do trabalho de campo grande",
"Comarca" : "Campo Grande",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831106b"),
"CodVara" : "0004",
"NomeVara" : "4ª vara do trabalho de campo grande",
"Comarca" : "Campo Grande",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831106c"),
"CodVara" : "0005",
"NomeVara" : "5ª vara do trabalho de campo grande",
"Comarca" : "Campo Grande",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831106d"),
"CodVara" : "0006",
"NomeVara" : "6ª vara do trabalho de campo grande",
"Comarca" : "Campo Grande",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831106e"),
"CodVara" : "0007",
"NomeVara" : "7ª vara do trabalho de campo grande",
"Comarca" : "Campo Grande",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831106f"),
"CodVara" : "0021",
"NomeVara" : "1ª vara do trabalho de dourados",
"Comarca" : "Dourados",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311070"),
"CodVara" : "0022",
"NomeVara" : "2ª vara do trabalho de dourados",
"Comarca" : "Dourados",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311071"),
"CodVara" : "0031",
"NomeVara" : "vara do trabalho de aquidauana",
"Comarca" : "Aquidauana",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311072"),
"CodVara" : "0036",
"NomeVara" : "vara do trabalho de amambai",
"Comarca" : "Amambai",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311073"),
"CodVara" : "0041",
"NomeVara" : "vara do trabalho de corumbá",
"Comarca" : "Corumbá",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311074"),
"CodVara" : "0046",
"NomeVara" : "1º vara do trabalho de coxim",
"Comarca" : "Coxim",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311075"),
"CodVara" : "0051",
"NomeVara" : "vara do trabalho de mundo novo",
"Comarca" : "Mundo Novo",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311076"),
"CodVara" : "0056",
"NomeVara" : "vara do trabalho de nova andradina",
"Comarca" : "Nova Andradina",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311077"),
"CodVara" : "0061",
"NomeVara" : "vara do trabalho de paranaíba",
"Comarca" : "Paranaíba",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311078"),
"CodVara" : "0066",
"NomeVara" : "vara do trabalho de ponta porã",
"Comarca" : "Ponta Porã",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311079"),
"CodVara" : "0071",
"NomeVara" : "1ª vara do trabalho de três lagoas",
"Comarca" : "Três Lagoas",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831107a"),
"CodVara" : "0072",
"NomeVara" : "2ª vara do trabalho de três lagoas",
"Comarca" : "Três Lagoas",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831107b"),
"CodVara" : "0076",
"NomeVara" : "vara do trabalho de jardim",
"Comarca" : "Jardim",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831107c"),
"CodVara" : "0081",
"NomeVara" : "vara do trabalho de são gabriel do oeste",
"Comarca" : "São Gabriel Do Oeste",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831107d"),
"CodVara" : "0086",
"NomeVara" : "vara do trabalho de naviraí",
"Comarca" : "Naviraí",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831107e"),
"CodVara" : "0091",
"NomeVara" : "vara do trabalho de rio brilhante",
"Comarca" : "Rio Brilhante",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b503831107f"),
"CodVara" : "0096",
"NomeVara" : "vara do trabalho de bataguassu",
"Comarca" : "Bataguassu",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311080"),
"CodVara" : "0101",
"NomeVara" : "vara do trabalho de cassilândia",
"Comarca" : "Cassilândia",
"Uf" : "MS"
},
{
"_id" : ObjectId("5cf55fc5cb865b5038311081"),
"CodVara" : "0106",
"NomeVara" : "vara do trabalho de fátima do sul",
"Comarca" : "Fátima Do Sul",
"Uf" : "MS"
}
Upvotes: 0
Views: 151
Reputation: 17915
You could do that by using $addFields & $cond which conditionally adds same field Varas
or null
, So add this stage as last stage to your existing pipeline :
{$addFields : {Varas: { $cond: [ {$eq : ['$Varas.CodVara', '9001']}, '$Varas', null ] }}}
Query :
db.getCollection('Tribunais').aggregate([
{
$match: {
Cod: '5'
}
},
{
$unwind: '$Orgaos'
},
{
$match: {
'Orgaos.Siglas': 'MS'
}
},
{
$lookup: {
'from': 'Varas',
'localField': 'Orgaos.Varas',
'foreignField': '_id',
'as': 'Varas'
}
},
{
$unwind: '$Varas'
}, { $addFields: { Varas: { $cond: [{ $eq: ['$Varas.CodVara', '9001'] }, '$Varas', null] } } }
])
Upvotes: 1