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

140
Visualizações
Encuentre la frecuencia del evento según el valor del objeto anidado: agregado de MongoDB

Tengo el siguiente esquema de datos y trato de encontrar la frecuencia de 'eventType' en función del campo 'country'. Estoy usando Mongoose en una aplicación Nodejs.

 { username: "jack", events: [ { eventType: "party", createdAt: "2022-01-23T10:26:11.214Z", visitorInfo: { location: { country: 'US' } } }, { eventType: "party", createdAt: "2022-01-30T10:26:11.214Z", visitorInfo: { location: { country: 'US' } } }, { eventType: "party", createdAt: "2022-01-29T10:26:11.214Z", visitorInfo: { location: { country: 'US' } } }, { eventType: "meeting", createdAt: "2022-01-29T10:26:11.214Z", visitorInfo: { location: { country: 'US' } } }, { eventType: "meeting", createdAt: "2022-01-31T10:16:11.214Z", visitorInfo: { location: { country: 'GB' } } }, { eventType: "meeting", createdAt: "2022-01-31T10:16:11.214Z", visitorInfo: { location: { country: 'GB' } } }, { eventType: "party", createdAt: "2022-01-31T10:16:10.214Z", visitorInfo: { location: { country: 'GB' } } } ] }

Lo que estoy intentando hasta ahora:

 db.collection.aggregate([ { $match: { username: "jack" } }, { $unwind: "$events" }, { $match: { "events.eventType": "party" } }, countries: [ { $group: { _id: "$events.visitorInfo.location.country", frequency: { $sum: 1 }, }, } { $project: { _id: 0, countries: "$countries" } } ] } ])

Estoy tratando de hacer coincidir los tipos de eventos aquí y luego agruparlos por país. Otro enfoque podría ser obtener primero una lista de países únicos y luego encontrar la frecuencia de eventos en cada uno de esos países. Se agradece cualquier comentario sobre estos enfoques.

Básicamente lo que espero obtener como resultado:

 countryAndEventFrequency: [ { country: 'US', party: 3, meeting: 1 }, { country: 'GB', party: 2, meeting: 1 }, ]

Agradezco cualquier ayuda u orientación. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

 db.collection.aggregate([ { $unwind: "$events" }, { $project: { party: { $cond: [ { $eq: [ "$events.eventType", "party" ] }, 1, 0 ] }, meeting: { $cond: [ { $eq: [ "$events.eventType", "meeting" ] }, 1, 0 ] }, country: "$events.visitorInfo.location.country" } }, { $group: { _id: "$country", meeting: { $sum: "$meeting" }, party: { $sum: "$party" } } }, { $project: { country: "$_id", meeting: 1, party: 1 } }, { $group: { _id: "cc", countryAndEventFrequency: { $push: "$$ROOT" } } }, { $project: { _id: 0, countryAndEventFrequency: 1 } } ])

explicado:

  1. desenrollar la matriz de eventos
  2. proyecto para separar fiesta y reunión de eventType
  3. grupo para contar las reuniones y fiestas por país
  4. proyectar los campos necesarios.
  5. Mueva los documentos a la matriz countryAndEventFrequency

patio de juegos

about 4 years ago · Juan Pablo Isaza 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