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

180
Visualizações
Cuál es la mejor estrategia para agrupar usuarios enlazados

Hay gente en una ciudad. Una ciudad está representada por una colección mongodb llamada "ciudades". Las personas en la ciudad están solas o caminando juntas con otra persona en la misma ciudad.

El esquema es:

 { name: String, people: [ { name: String, status?: String, walkingWith?: String } ] }

Los campos "status" y "walkingWith" son los que me gustaría usar, si mi estrategia es correcta.

Aquí hay algunas entradas:

 var newyorkPeople = []; newyorkPeople[0] = {"name": "Jack", "status": "alone", "walkingWith": "none"}; newyorkPeople[1] = {"name": "James", "status": "meeting", "walkingWith": "Maria"}; newyorkPeople[2] = {"name": "Robert", "status": "meeting", "walkingWith": "Nina"}; newyorkPeople[3] = {"name": "Steven", "status": "alone", "walkingWith": "none"}; newyorkPeople[4] = {"name": "Maria", "status": "meeting", "walkingWith": "James"}; newyorkPeople[5] = {"name": "Nina", "status": "meeting", "walkingWith": "Robert"};

Luego entro en una nueva ciudad con gente en ella:

 db.cities.insert({"name": "New York", "people": newyorkPeople});

Ahora, el objetivo es facilitar que un cliente (interfaz) describa qué personas hay en esta ciudad. Y agruparlos. Primero muestra a todas las personas solitarias. Y luego las "parejas" que caminan juntas.

No estoy seguro de si es mejor hacer la agrupación en el backend o en el frontend (angular).

En backend (api) estoy usando express.js. La API podría simplemente devolver todo el documento de la ciudad a la interfaz. Y luego la interfaz sería responsable de clasificar/agrupar a las personas.

En ese caso, la estrategia en la que estoy pensando sería:

Recorra a las personas y solo imprima las personas solitarias. Los que están caminando con alguien, deben ir en otro arreglo. Así que el primer paso, mostrar a todas las personas solitarias, está cumplido.

Ahora, todavía necesito mostrar parejas. Primero necesito mostrar la pareja "James y Maria" y luego la pareja "Robert y Nina". ¿Debo crear una matriz para cada pareja? En el ejemplo anterior, debería crear 2 matrices.

Sin embargo, no estoy seguro de que esta sea la mejor estrategia. Estoy bien para modificar el esquema de base de datos o incluso dejar que el backend entregue a las personas agrupadas si alguien pudiera dar alguna buena sugerencia.

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

0

Puede utilizar el siguiente esquema (simplificado de los suyos)

 { name:Stirng, //name of the person city:String, //name of the city status:String, //status walkingWith:String //name of the person walking with }

El beneficio de usar este esquema es que puede facilitar sus consultas. Vamos a consultar su necesidad.

1- todas las personas en una ciudad

 db.city.aggregate([ {$group:{_id:"$city", people:{$push:"$name"}}} ])

2- todas las personas en una ciudad sola

 db.city.aggregate([ {$match:{status:"alone"}}, {$group:{_id:"$city", people:{$push:"$name"}}} ])

3- todas las personas en una ciudad reuniéndose con alguien

 db.getCollection('demos').aggregate([ {$match:{status:"meeting"}}, {$group:{_id:"$city", people:{$push:{name:"$name", walkingWith:"$walkingWith"}}}} ])
about 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