lookup
を実行すると pipeline
を使用する 一致ステージを使用すると、インデックスは$eq operator
と一致するフィールドにのみ使用されます。 残りのインデックスは使用されません。
また、パイプラインで指定した例は次のように機能します(ここでもインデックスは使用されないため、ここでは使用されません $eq
)
db.matches.aggregate([
{
$lookup: {
from: "players",
let: {
ids: {
$map: {
input: "$players",
in: "$$this._id"
}
}
},
pipeline: [
{
$match: {
$expr: {
$in: [
"$_id",
"$$ids"
]
}
}
}
],
as: "players"
}
}
])
プレーヤーはオブジェクトの配列であるため、最初にIDの配列にマッピングする必要があります