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

246
Views
¿Cómo hacer find en node y mongodb?

Estos son los datos de mis 'grupos de usuarios'

 { "_id": { "$oid": "58f7537ec422895572e988a1" }, "name": "aaa", "groupname": "group north,group south", "mobilenumber": "0509867865", "userid": "6035555c16" }

aquí los datos de la colección de mis 'grupos'

 { "_id": { "$oid": "58e5eb3c035555c33f979daf" }, "groupname": "group north", "message": [ { "val": "hai how are you", "key": "1" }, { "val": "i am fine", "key": "2" } ] }, { "_id": { "$oid": "3c035555c33f979daf58e5eb" }, "groupname": "group south", "message": [ { "val": "testing", "key": "1" } ] }, { "_id": { "$oid": "55c3c035533f979f58e5ebda" }, "groupname": "group east", "message": [ { "val": "where are you from", "key": "1" } ] }

En el grupo de usuarios, estoy tratando de obtener el nombre del groupname según el número de mobilenumber y tengo dos grupos: group north y group south . Después de obtener el nombre del grupo, necesito buscar el mensaje. ¿Cómo puedo escribir esto para encontrar la condición para esto? Mi objetivo es enviar un mensaje de group north, group south al usuario.

 Usergroup.findOne({ mobilenumber: 0509867865 }, function(err, usergroup) { if (err) { return handleError(res, err); } if (!usergroup) { return res.status(404).send('Not Found'); } console.log(usergroup.groupname); //group north ,group south Group.find({ groupname: }, function(err, group) { if (err) { return handleError(res, err); } return res.json(group); }); });
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede usar el operador $in :

 Usergroup.findOne({ mobilenumber: 0509867865 }, function(err, usergroup) { if (err) { return handleError(res, err); } if (!usergroup) { return res.status(404).send('Not Found'); } console.log(usergroup.groupname); //group north ,group south Group.find({ groupname: { $in: usergroup.groupname.split(",") } }, function(err, group) { if (err) { return handleError(res, err); } return res.json(group); }); });
over 4 years ago · Santiago Trujillo Report

0

Puede utilizar la siguiente agregación para la versión 3.4 .

La consulta $match cotejará los documentos en la colección de grupos de usergroups con el mobilenumber seguido de $split para dividir los groupnames de grupo y $lookup groupname el nombre de grupo en la colección de groups para messages . El paso final es $unwind la matriz mobile_group para $project los messages para cada groupname de grupo.

 db.usergroups.aggregate([ { $match: { mobilenumber:"0509867865" } }, { $project: { groupname:{ $split: [ "$groupname", ',' ] } } }, { $lookup: { from: "groups", localField: "groupname", foreignField: "groupname", as: "mobile_group" } }, {$unwind:"$mobile_group"}, { $project : { groupname:"$mobile_group.groupname", "messages" : "$mobile_group.message" } } ])
over 4 years ago · Santiago Trujillo Report

0

Simplemente puede obtener el nombre del grupo del grupo de Usergroup , split en una matriz de dos nombres de grupo usando groupname str.split(',') y luego consultar el Group para obtener dos groupname de grupo de la siguiente manera:

 Usergroup.findOne({ mobilenumber: 0509867865 }, function(err, usergroup) { if (err) { return handleError(res, err); } if (!usergroup) { return res.status(404).send('Not Found'); } console.log(usergroup.groupname); var groupname = usergroup.groupname; var groups = groupname.split(','); var messages = {}; for (var i = groups.length - 1; i >= 0; i--) { Group.find({ groupname: groups[i] }, function(err, group) { if (err) { return handleError(res, err); } messages[group.groupname] = group.message; }); if (i == 0) { return res.status(200).json(messages); } } });
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!