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

239
Views
¿Cómo puedo enumerar todos los registros para ver si están duplicados?

Tengo un problema que no puedo resolver. Tengo una tabla en MongoDB, y esta es la estructura:

 const shopEconomy = new mongoose.Schema({ guildID: { type: String }, name: { type: String }, value: { type: Number }, description: { type: String }, rolereq: { type: String }, roleadd: { type: String }, roleremove: { type: String }, buyinfo: { type: String } });

Necesito enumerar todos los nombres de la tabla (shopData.name) y luego verificar si el nombre escrito existe en la base de datos. Intenté hacer algo como el siguiente, pero no funciona.

 const shopData = await shopEconomy.find({ guildID: message.guild.id }); let categories = []; let data = new Object(); for(const i in shopData){ data += `${shopData[i].name}\n` categories.push(data) }

¿Alguien podría echarle un vistazo a esto y ayudarme?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Parte del problema aquí proviene del uso de un bucle for...in que trata shopData como un objeto y recorre todas sus propiedades. En su lugar, intente usar un bucle for...of que trate shopData como una matriz y recorra todos los objetos que contiene.

 ... for(const i of shopData) { data += `${i.name}\n` ... }

Consulte también esta pregunta sobre for...in vs for...of y esta pregunta sobre bucles de JavaScript.

about 4 years ago · Santiago Trujillo Report

0

El título de la pregunta no coincide exactamente con la descripción de la pregunta. Dada la descripción, supongamos que el nombre escrito se asigna a var typedName .
Supongamos también que ha vinculado su esquema shopEconomy a un modelo que realmente interactuará con una colección mongodb llamada shopData . Entonces esto iterará todos los documentos en shopData :

 var found = false; cursor = db.shopData.find(); // get EVERYTHING cursor.forEach(function(doc) { print(doc['name']); if(doc['name'] == typedName) { found = true; } }); if(found) { print(typedName,"was found"); }

Es probable que el OP quiera encontrar un nombre duplicado en la colección, para lo cual funcionará esta canalización:

 db.shopData.aggregate([ {$group: {_id: '$name', N:{$sum:1}} }, {$match: {'N':{$gt:1}}} ]);
about 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!