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

239
Vistas
¿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); }); });
about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

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); }); });
about 4 years ago · Santiago Trujillo Denunciar

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" } } ])
about 4 years ago · Santiago Trujillo Denunciar

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); } } });
about 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