• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

202
Views
La función de mapa no funciona correctamente al consultar desde Mongodb

Tengo algunos documentos mongodb como este

 {'_id':'1', 'year':2020, 'season':'Summer', 'status':'Over'}, {'_id':'2', 'year':2020, 'season':'Winter', 'status':'Pending'}, {'_id':'3', 'year':2020, 'season':'Rainy', 'status':'Pending'}, {'_id':'4', 'year':2021, 'season':'Summer', 'status':'Pending'} ........ ... .

Si doy una entrada de una serie de años [2020,2021], entonces mi salida esperada debería ser

 [{year:2020,sesason:['Winter','Rainy']},{year:2021,sesason:['Summer','Winter','Rainy']}]

donde la matriz de temporada solo debe contener valores cuyo estado sea 'Pendiente'. Probé este código, pero no obtuve el resultado esperado

 var arr =[]; var yearsArray = [2020,2021] var seasonArray = ['Summer','Rainy','Winter'] var pendingSeasons = []; return await Promise.all( yearsArray.map(async(year) =>{ return await Promise.all( seasonArray.map(async(tP) =>{ await db.collection('CC') .find({'year':year,'season':tP}) .toArray() .then((data) =>{ if(data.status != 'Over'){ pendingSeasons.push(tP) } }) }) ).then(arr.push({"year":year,"season":pendingSeasons})) }) ).then(() =>{ return arr })

La salida que obtengo se da a continuación:

 [ { "year": 2020, "season": [ "Summer","Rainy","Winter","Summer","Rainy","Rainy","Summer", "Winter","Winter"] }, { "year": 2021, "season": ["Summer","Rainy","Winter","Summer","Rainy","Rainy", "Summer","Winter","Winter"] } ]
about 3 years ago · Santiago Trujillo
2 answers
Answer question

0

El problema es donde estás comparando dos cadenas.

 if(data.status != 'Over'){ pendingSeasons.push(tP) }

Debería ser como:

 if(data.status.localeCompare("Over") != 0){ pendingSeasons.push(tP) }
about 3 years ago · Santiago Trujillo Report

0

tengo la respuesta

 var Data = db.collection('CC').find({}).toArray(); var yrsArray = [2020,2021] var seasonArray = ['Summer','Rainy','Winter'] let yrResult = []; let yrObj = {} yrsArray.forEach((element) => { yrObj = {}; yrObj.year = element; let season = []; let year = Data.filter((element1) => element1.year == element) for (var i=0;i<seasonArray.length;i++){ const currentSeason = year.filter((element)=>element.season == seasonArray[i]) if(currentSeason.length == 0){season.push(seasonArray[i])} else if(currentSeason[0].status != "Over") {season.push(seasonArray[i])} yrObj.season = season; } yrResult.push(yrObj) }) return yrResult
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error