Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

229
Visualizações
Monodb con nodejs: consulta con el grupo después del resultado del conteo

Tengo la siguiente colección que representa un registro de deslizamiento cuando un miembro va al gimnasio.

 { "_id" : ObjectId(""), "content" : { "Date_Key" : "", "TRANSACTION_EVENT_KEY" : "", "SITE_NAME" : "", "Swipe_DateTime" : "", "Gender" : "", "Post_Out_Code" : "", "Year_Of_Birth" : "", "Time_Key" : "", "MemberID_Hash" : "", "Member_Key_Hash" : "", "Swipes" : "" }, "collection" : "observations" }

Quiero devolver el número de miembros por cada número de visitas al gimnasio en un mes determinado. Por ejemplo:

 { {"nrOfGymSwipes": 0, "nrOfMembers": 10}, // 10 members who swiped 0 times {"nrOfGymSwipes": 1, "nrOfMembers": 15}, // 15 members who swiped once {"nrOfGymSwipes": 2, "nrOfMembers": 17}, ... }

He probado lo siguiente:

 collection .aggregate( [{$match: {"content.Swipe_DateTime": {$regex:"201602"}}}, {$group: {_id: "$content.MemberID_Hash", "nrOfGymSwipes":{$sum: 1}}}, {$sort: {"nrOfGymSwipes": 1}}],

que devuelve para cada miembro el número de golpes en el mes dado.

 ......... { _id: '111', nrOfGymSwipes: 16 }, { _id: '112', nrOfGymSwipes: 16 }, { _id: '113', nrOfGymSwipes: 17 }, ...............

Ahora estaba pensando en hacer un grupo por la cantidad de golpes en el gimnasio y contar las identificaciones, lo intenté pero no devuelve lo que esperaba

 collection .aggregate( [{$match: {"content.Swipe_DateTime": {$regex:"201602"}}}, {$group: {_id: "$content.MemberID_Hash", "nrOfGymSwipes":{$sum: 1}}}, {$group: {_id: "nrOfGymSwipes", "nrOfMembers":{$sum: 1}}}, <---added this {$sort: {"nrOfGymSwipes": 1}}],

¿Alguna idea de cómo puedo resolver esto? Además, ¿hay alguna forma de cambiar la forma en que obtengo la salida json? por ejemplo, en lugar de mostrar _id: parte "32131" , salida nrOfMembers: "312321"

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Ya casi había llegado con su grupo final, solo necesitaba prefijar su clave _id con $ para indicar el campo de número de deslizamientos. La canalización $sort es donde se encuentra otro problema porque el campo que está tratando de ordenar no existe. La canalización agregada funciona bajo la premisa de que los resultados de una etapa de la canalización pasan a la siguiente como documentos modificados (con su propia estructura según la operación agregada) y la última canalización de grupo solo produce dos campos, "_id" y "nrOfMembers" .

Puede usar el paso de canalización $project para que funcione la etapa $sort , ya que crea el campo "nrOfGymSwipes" reemplazando la clave _id anterior y luego puede obtener el resultado final en la estructura deseada. Por lo tanto, su operación agregada final debería ser:

 collection.aggregate([ { "$match": { "content.Swipe_DateTime": { "$regex":"201602" } } }, { "$group": { "_id": "$content.MemberID_Hash", "nrOfGymSwipes": { "$sum": 1 } } }, { "$group": { "_id": "$nrOfGymSwipes", "nrOfMembers": { "$sum": 1 } } }, { "$project": { "_id": 0, "nrOfGymSwipes": "$_id", "nrOfMembers": 1 } }, { "$sort": { "nrOfGymSwipes": 1 } } ], function (err, result) { ... });
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda