Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!