我正在尝试“翻译”来自 MySQL 的查询,
SELECT a.Nome, a.PosicaoPrimaria, a.PosicaoSecundaria
FROM Atleta AS a INNER JOIN Equipa AS e ON a.Equipa_idEquipa = e.idEquipa
WHERE e.Localidade = 'Braga' AND a.PosicaoSecundaria != ''
ORDER BY a.PosicaoSecundaria;
到 MongoDB 查询。到目前为止,一切都很好。我已经搜索并尝试了解我如何能够做我想做的事,但我已经停下来了。
到目前为止,这就是我作为 MongoDB 查询所拥有的,
db.Atleta.aggregate([
{$lookup:
{from:"Equipa",
let: {e:"$Equipa_idEquipa", ps:"$PosicaoSecundaria"},
pipeline:[
{$match:
{$expr:
{$and: [ {$eq:["$idEquipa", "$$e"]},
{$ne:[null, "$$ps"]},
{$eq:["$Localidade", "Braga"]} ] } } }],
as:"Query" }},
{$project:{Query:1, Nome:1, PosicaoPrimaria:1, PosicaoSecundaria:1, _id:0}} ]).pretty()
这为我提供了我想要返回的玩家的结果,但它也返回了所有其他玩家,他们在查询中“不符合要求”。见下图。
我真正需要的是过滤结果以仅显示具有“查询”数组的玩家不为空。有没有办法可以做到?