我正在搜索如何在 MongoDB 的聚合中轉換此代碼。假設我有這項服務,它將計算即將開始比賽的每項運動中的游戲“賽程”數量我有兩個模型 Fixture,這意味著游戲和 Sport 將成為運動,每個 Fixture 都有我們的運動 ID可以在聚合期間分組。這是一個作業示例
export const countFixtures = async () => {
const sports = await Sports.find();
const countFixturesBySport = [];
for (let index = 0; index < sports.length; index ) {
const sport = sports[index];
const countFixtures = await Fixture.countDocuments({
Sport: sport._id,
StartDate: { $gt: new Date() },
});
countFixturesBySport.push({
sport: sport.Name,
sportId: sport._id,
fixturesCount: countFixtures,
});
}
return countFixturesBySport;
};
我從 mongoDB 中的這段代碼開始:
await Sports.aggregate([
{
$lookup: {
from: 'fixture',
let: { fixture: '$fixture' },
pipeline: [
{
$match: { $expr: { $eq: ['$_id', '$$fixture'] } },
},{
$project:
{$addFields: {
sport:'Name',
sportId:'_id',
countFixture:''
}}
])
uj5u.com熱心網友回復:
在這里你去,你打算用在正確的軌道上$lookup,只需要在實際的邏輯一些小的調整。
db.sports.aggregate([
{
$lookup: {
from: "fixture",
let: {
sportId: "$_id"
},
pipeline: [
{
$match: {
$expr: {
$eq: [
"$Sport",
"$$sportId"
]
}
}
},
{
$project: {
_id: 1
}
}
],
as: "matchedFixtures"
}
},
{
$project: {
_id: 0,
sport: "$Name",
sportId: "$_id",
fixturesCount: {
$size: "$matchedFixtures"
}
}
}
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/388224.html
