Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
MongoDB: enumere los nombres de usuario y la cantidad de respuestas que recibieron

Tengo una colección configurada en mongoDB con ejemplos de comentarios realizados por usuarios de una plataforma de redes sociales inventada, de esta forma:

 { "_id" : ObjectId("5aa58936c4214f42f4c666b8"), "id" : "85", "user_name": "Alex4Ever", "text" : "This is a comment", "in_reply_to_user_name": "SamLad" }, { "_id" : ObjectId("5aa58935c4214f42f4c66608"), "id" : "86", "user_name": "SamLad", "text" : "I am inevitable", "in_reply_to_user_name": null }, { "_id" : ObjectId("5aa588e4c4214f42f4c63caa"), "id" : "87", "user_name": "HewwoKitty", "text" : "What is grief, if not love persevering?", "in_reply_to_user_name": "Alex4Ever" } //There are more, but for testing purposes, I only use these 3 for now.

Tengo que generar una consulta en MongoDB para enumerar todos los usuarios en el archivo junto con la cantidad de respuestas que recibieron. Entonces, en el bit de archivo de muestra anterior, la salida debería ser como:

 "_id": "Alex4Ever", "replyCount" : 1, //HewwoKitty replied to Alex4Ever "_id": "SamLad", "replyCount" : 1, //Alex4Ever replied to SamLad "_id": "HewwoKitty", "replyCount" : 0, //No one replied to HewwoKitty

Mi intento de hacer esto:

 db.comments.aggregate([ {$match:{"in_reply_to_user_name":{"$exists":true, "$ne":null}}}, {$group: { _id: "$in_reply_to_user_name", replyCount:{$sum: 1}}}, {$sort:{replyCount: -1}} ]).pretty()

Sin embargo, solo obtengo los valores distintos de cero, es decir, no obtengo HewwoKitty con un número de replyCount de 0 . ¿Hay alguna forma de imprimir las 3 líneas, incluidas las líneas con 0 respuestas?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Demostración - https://mongoplayground.net/p/JA9YasEYuVV

Use $búsqueda y cree una autounión para obtener todas las respuestas de un usuario y use $tamaño para obtener el recuento de respuestas, luego $ agrúpelas en nombre_usuario.

Extrae el número de respuestas, toma $primer valor del grupo

 db.collection.aggregate([ { "$match": { "in_reply_to_user_name": { "$exists": true } } }, { "$lookup": { "from": "collection", "localField": "user_name", "foreignField": "in_reply_to_user_name", "as": "replies" } }, { "$project": { "user_name": 1, "replyCount": { "$size": "$replies" } } }, { "$group": { "_id": "$user_name", "replyCount": { "$first": "$replyCount" } } } ])
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda